>首页> IT >

通讯!eval是es6中的方法吗

时间:2022-08-30 17:49:02       来源:PHP中文网

如何快速入门VUE3.0:进入学习

本教程操作环境:windows10系统、ECMAScript 6.0版本、Dell G3电脑。

eval不是es6中的方法

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。


(资料图)

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

eval() 函数会将传入的字符串当做 JavaScript 代码进行执行,如果传入的字符串是表达式则返回表达式求值结果,否则返回 undefined 。

描述

如果传入 eval() 的参数不是字符串,则会直接返回该参数。

非严格模式下直接调用 eval() 时,里面使用 var 声明的变量和使用 function 声明的函数会修改当前词法作用域,里面使用 let 和 const 声明的变量不会修改当前词法作用域,但是会在当前创建新的词法作用域。

非严格模式下间接引用 eval() 时,会直接运行在全局环境中,里面使用 var 声明的变量和使用 function 声明的函数会修改全局词法作用域,里面使用 let 和 const 声明的变量不会修改全局词法作用域,但是会在全局环境创建新的词法作用域。

严格模式下直接调用的 eval() 时,会在当前创建一个新的独立的词法作用域。

严格模式下间接引用的 eval() 时(只有在 eval() 内的字符串里面开启严格模式时,字符串才会以严格模式执行),会在全局环境创建一个新的独立的词法作用域。

使用 window.eval() 等同于间接引用 eval() 。

eval() 中执行的代码只能调用 JS 解释器(Interpreter)来解释执行,无法被即时编译器(JIT Compiler)优化, eval() 中的执行的代码可能会导致 JS 引擎在已经生成的机器代码中进行变量查找和赋值,带来性能问题。

eval() 使用不当可能会导致里面执行的字符串容易遭受恶意修改,带来安全问题(比如 XSS 攻击)。

使用 eval() 会干扰代码压缩工具的行为。代码压缩工具一般会将局部变量名重命名为更短的变量名(如 a 和 b 等),以便减小代码体积。当使用了 eval() 时,由于外部的局部变量可能会被 eval() 访问到,代码压缩工具便不会对可能会被 eval() 访问到的局部变量名进行压缩,会降低代码压缩率。

语法

eval(string)

示例如下:

123<script>eval("x=10;y=20;document.write(x*y)");document.write("
" + eval("2+2"));document.write("
" + eval(x+17));</script>

输出结果:

【相关推荐:javascript视频教程、web前端】

以上就是eval是es6中的方法吗的详细内容,更多请关注php中文网其它相关文章!

关键词: 压缩工具 一个新的 可能会被