JavaScript中Global全局对象之eval()函数

JavaScript中Global对象中的eval函数,会在当前作用域中执行一段 JavaScript 代码字符串。eval函数类似一个完整ECMAScript解析器,该函数接收一个字符串参数,将该参数做为实际JavaScript语句执行后,执行结果会被插入到原位置。


1. eval函数的用法

eval(string)函数是ECMAScript中功能非常强大的一个函数,它接收一个字符串参数,并将该字符串做为实际JavaScript语句执行。例如,下面两行代码执行结果是一样的:

eval('console.log("hello world")');    //hello world
console.log("hello world");    //hello world


2. eval函数与作用域

eval函数与执行环境共享作用域。也就是说在eval函数外面定义的变量或方法,可以在eval函数的字符串参数中访问。在eval函数的字符串参数中定义的变量或方法也可以在eval函数外部访问。示例如下:

var msg = 'hello world';
eval('console.log(msg)');    //hello world

eval('function sayHi () { console.log("hello world"); }');
sayHi();    //hello world


3. eval函数相关说明

严格模式下,在eval函数中定义的变量或方法不能在其外部访问,上面第二个示例中访问内部方法会抛出异常。

'use strict';

eval('function sayHi () { console.log("hello world"); }');
sayHi();    //抛出ReferenceErrorr的异常

严格模式下eval函数不能被覆盖,试图覆盖evaleval()EvalError

eval = function(){
    console.log('另一个eval');
}
//会抛出以下异常
SyntaxError: Assignment to eval or arguments is not allowed in strict mode
……

eval函数不能被滥用eval函数会执行任意传给它的代码,在代码字符串未知或者是来自一个不信任的源(如:用于执行用户输入的代码),绝对不要使用eval函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值