javascript基础从小白到高手系列二十二:eval()方法

您所在的位置:网站首页 eval函数描述错误的是 javascript基础从小白到高手系列二十二:eval()方法

javascript基础从小白到高手系列二十二:eval()方法

2024-07-16 11:29| 来源: 网络整理| 查看: 265

最后一个方法可能是整个ECMAScript 语言中最强大的了,它就是eval()。这个方法就是一个完 整的ECMAScript 解释器,它接收一个参数,即一个要执行的ECMAScript(JavaScript)字符串。来看 一个例子: eval(“console.log(‘hi’)”); 上面这行代码的功能与下一行等价: console.log(“hi”); 当解释器发现eval()调用时,会将参数解释为实际的ECMAScript 语句,然后将其插入到该位置。 通过eval()执行的代码属于该调用所在上下文,被执行的代码与该上下文拥有相同的作用域链。这意 味着定义在包含上下文中的变量可以在eval()调用内部被引用,比如下面这个例子: let msg = “hello world”; eval(“console.log(msg)”); // “hello world” 这里,变量msg 是在eval()调用的外部上下文中定义的,而console.log()显示了文本"hello world"。这是因为第二行代码会被替换成一行真正的函数调用代码。类似地,可以在eval()内部定义 一个函数或变量,然后在外部代码中引用,如下所示: eval(“function sayHi() { console.log(‘hi’); }”); sayHi(); 这里,函数sayHi()是在eval()内部定义的。因为该调用会被替换为真正的函数定义,所以才可 能在下一行代码中调用sayHi()。对于变量也是一样的: eval(“let msg = ‘hello world’;”); console.log(msg); // Reference Error: msg is not defined 通过eval()定义的任何变量和函数都不会被提升,这是因为在解析代码的时候,它们是被包含在 一个字符串中的。它们只是在eval()执行的时候才会被创建。 在严格模式下,在eval()内部创建的变量和函数无法被外部访问。换句话说,最后两个例子会报 错。同样,在严格模式下,赋值给eval 也会导致错误: “use strict”; eval = “hi”; // 导致错误 Global 对象属性 Global 对象有很多属性,其中一些前面已经提到过了。像undefined、NaN 和Infinity 等特殊 值都是Global 对象的属性。此外,所有原生引用类型构造函数,比如Object 和Function,也都是 Global 对象的属性。下表列出了所有这些属性。 属 性 说 明 undefined 特殊值undefined NaN 特殊值NaN Infinity 特殊值Infinity Object Object 的构造函数 Array Array 的构造函数 Function Function 的构造函数 Boolean Boolean 的构造函数 String String 的构造函数 属 性 说 明 Number Number 的构造函数 Date Date 的构造函数 RegExp RegExp 的构造函数 Symbol Symbol 的伪构造函数 Error Error 的构造函数 EvalError EvalError 的构造函数 RangeError RangeError 的构造函数 ReferenceError ReferenceError 的构造函数 SyntaxError SyntaxError 的构造函数 TypeError TypeError 的构造函数 URIError URIError 的构造函数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3