Eavl整理

一. 严格模式函数

eval方法只能在非严格模式中进行使用,在use strict中是不容许使用这个方法的。spa

二. 用法对象

  1. eval函数会接收一个参数obj,若是obj不是一个字符串,那么eval会直接返回obj
  2. 若是obj是一个字符串,也分两种状况:第一种状况是字符串内部是一个js表达式,且运行结果为一个具体的数值,那么该结果就会返回这个数值,不然就会返回undifined;若是内部只是一个单纯的字符串,那么就会返回这个字符串。
  3. 须要注意的点是,js声明对象的方法并不可以返回一个具体的数值,必须用括号包起来才能够返回数值,具体以下图:

2.1blog

三. 局部做用域作用域

eval直接在函数内部使用则返回的是局部变量,以下图:字符串

 

3.1变量

上图中eval直接在函数内部执行,即便在eval内部定义了一个全局变量a,可是它直接返回了局部变量,因此内部函数并无执行。方法

使在函数内部使用的eval成为全局变量的解决方法:im

(1) 利用window.eval()使其成为全局的变量,以下图:总结

 

3.2

这种状况就是把该变量变为全局变量,这样在执行完函数之后就能够获得这个a变量的值。

(2) 定义eval为全局的,以下图:

3.3

如上代码就会把b变量也变为全局变量,这样就能够在执行完该函数之后获取到b变量。

四. 总结

综上所述,eval至关因而在非严格模式下,定义了一种将JSON字符串转换为对象的形式,其功能和JSON.parse()是类似的。可是区别在于:

当为经过JSON.parse()转换为对象后的JSON再调用该函数继续进行转换时,就会报错。eval()方法不会如此,当传入字符串是对象时,继续使用上述的方式,它会返回原对象。

相关文章
相关标签/搜索