在NodeJS中使用"use strict"
有什么优势吗?例如,全局对象不是一个好的使用方式,因为所有请求都会改变该对象(当然假设该对象应该对每个用户都是唯一的)。在这种情况下,使用严格模式是一个好主意,对吗?
我觉得在Node中使用严格模式是一个好主意,但是我通过Google没有找到任何它的优缺点。
免责声明:我知道use strict
是什么,这个问题关注的是服务器端的优缺点!
在NodeJS中使用"use strict"
有什么优势吗?例如,全局对象不是一个好的使用方式,因为所有请求都会改变该对象(当然假设该对象应该对每个用户都是唯一的)。在这种情况下,使用严格模式是一个好主意,对吗?
我觉得在Node中使用严格模式是一个好主意,但是我通过Google没有找到任何它的优缺点。
免责声明:我知道use strict
是什么,这个问题关注的是服务器端的优缺点!
嗯,清晰度和速度。
与 SO 中流行的答案和问题所说的不同,严格模式和 "use strict"
指令的真正主要目标是消除 JavaScript 中的 动态作用域,这就是为什么不允许通过 arguments
更改参数以及更改 arguments
本身,为什么不允许使用 with
等等。
严格模式不允许动态作用域,因此您始终可以静态地知道变量指的是什么。在非严格模式下,with
语句、通过参数更改变量和其他类型的非静态作用域会使代码更难读。
// example from referenced thread
// global code
this.foo = 1;
(function () {
eval('var foo = 2');
with ({ foo: 3 }) {
foo // => 3
delete foo;
foo // => 2
delete foo;
foo // => 1
delete foo;
foo // ReferenceError
}
}());
在严格模式下可以避免这种头疼。
严格模式比非严格模式快得多。由于可以假定许多内容不会更改并且可以解决引用的方式,因此许多优化只能在严格模式下进行。V8在内部广泛使用此功能。
参考资料:
with
和eval
?我感到震惊,因为互联网没有爆炸! - Sterling Archer