美文网首页
3.6 eval()

3.6 eval()

作者: 柠檬与断章 | 来源:发表于2019-11-18 15:37 被阅读0次

3.6 eval()
问题一:eval() 是一个运算符还是一个函数

eval()是一个函数,但是经常被当做运算符对待了

问题二:eval() 的用法

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

问题三:eval() 的安全性

eval() 是一个危险的函数, 他执行的代码拥有着执行者的权利。如果你用eval()运行的字符串代码被恶意方(不怀好意的人)操控修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个eval()被调用时的作用域,这也有可能导致一些不同方式的攻击。相似的 Function就不容易被攻击。

eval()通常比替代方法慢,因为它必须调用 JS 解释器,而许多其他结构则由现代 JS 引擎进行优化。

在常见的案例中我们都会找更安全或者更快的方案去替换eval()

相关文章

  • 3.6 eval()

    3.6 eval()问题一:eval() 是一个运算符还是一个函数 eval()是一个函数,但是经常被当做运算符对...

  • (1, eval)('this') eval('this')

    (1, eval)('this') eval('this') 两者有什么不同 (1,eval)和普通的eval函...

  • eval作用域

    输出 原因: (1,eval)是个表达式,;类似1&&eval,属于间接引用了eval; eval 只在被直接调用...

  • JS之eval()

    Javascript 之 eval() 语法 eval(string) 描述 eval()是一个顶级函数并且跟任何...

  • PHP代码执行

    Eval函数介绍 Eval函数的语法如下: eval ( string $code ) $code是字符串型变量,...

  • R|Rmarkown查漏补缺

    1. 代码块设置 核心函数:eval eval = TRUE,显示运行结果,默认值 eval = FALSE,不显...

  • python内置关键字

    eval eval(expression, globals=None, locals=None) --- 官方文...

  • python内置函数

    eval() eval(expression, globals=None, locals=None) expres...

  • 12.1、python内置函数——eval、exec、compi

    内置函数——eval、exec、compile eval()将字符串类型的代码执行并返回结果 print(eval...

  • 你所不知道的eval

    首先,eval是什么?MDN对eval的解释是: eval() 函数会将传入的字符串当做 JavaScript 代...

网友评论

      本文标题:3.6 eval()

      本文链接:https://www.haomeiwen.com/subject/jxufictx.html