JavaScript学习笔记三-数组
eval命令 eval命令 接受一个字符串 作为参数,并将这个字符串当作语句执行。 eval('var a = 1;'); a // 1 放在eval中的字符串, 应该有独自存在的意义 ,不能用来与eval以外的命令配合使用。举例来说,下面的代码将会报错。 如果eval的参数不是字符串,那么会原样返回。 eval ( 123 ) // 123 eval没有自己的作用域 ,都在当前作用域内执行,因此可能会修改当前作用域的变量的值,造成安全问题。 var a = 1; eval('a = 2'); a // 2 JavaScript 规定,如果使用严格模式,eval内部声明的变量,不会影响到外部作用域。 ( function f ( ) { 'use strict' ; eval ( 'var foo = 123' ) ; console . log ( foo ) ; // ReferenceError: foo is not defined } ) ( ) 上面代码中, 函数f内部是严格模式,这时eval内部声明的foo变量,就不会影响到外部。 不过,即使在严格模式下,eval依然可以读写当前作用域的变量。 ( function f ( ) { 'use strict' ; var foo = 1 ; eval ( 'foo = 2' ) ; console . log ( foo