JavaScript 中有两个机制可以“欺骗”词法作用域:eval(..) 和 with

非严格模式下可使用!!!

1、eval(‘代码块’);

function foo(str) {

//"use strict";

eval( str );

console.log( a ); // ReferenceError: a is not defined

}

foo( "var a = 2" );

2、with

var obj = {

a: 1,

b: 2,

c: 3

};

// 单调乏味的重复 "obj"

obj.a = 2;

obj.b = 3;

obj.c = 4;

// 简单的快捷方式

with (obj) {

a = 3;

b = 4;

c = 5;

}

不推荐使用 eval(..) 和 with 的原因是会被严格模式所影响(限

制)。with 被完全禁止,而在保留核心功能的前提下,间接或非安全地使用

eval(..) 也被禁止了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容