zoukankan      html  css  js  c++  java
  • Eval整理

    一. 严格模式

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

    二. 用法

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

    2.1

    三. 局部作用域

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

     

    3.1

    上图中eval直接在函数内部执行,即使在eval内部定义了一个全局变量a,但是它直接返回了局部变量,所以内部函数并没有执行。

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

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

     

    3.2

    这种情况就是把该变量变为全局变量,这样在执行完函数以后就可以得到这个a变量的值。

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

    3.3

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

    四. 总结

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

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

  • 相关阅读:
    360°视频论文调研
    360°视频相机调研
    Oculus VR眼镜调研
    VR论文调研
    3ds Max学习日记(十)——显示场景资源管理器
    最近在学习Flask框架,那么就说下jinja2吧~~~
    最近学习了Sqlite3数据库,写一下操作应用以及命令
    HTML5游戏开发,剪刀石头布小游戏案例
    jquery简单的图片切换效果,支持pc端、移动端的banner图片切换开发
    jquery简单的大背景banner图片全屏切换
  • 原文地址:https://www.cnblogs.com/andyzjy/p/10510240.html
Copyright © 2011-2022 走看看