使所有函数严格模式文字对象?

Dun*_*Man 3 javascript mode object strict literals

假设我们有这个脚本.

var apple = {
    type: "macintosh",
    color: "red",
    getInfo: function () {
        return this.color + ' ' + this.type + ' apple';
    }
    ///more functions here....
}
Run Code Online (Sandbox Code Playgroud)

如何让所有这些功能以严格模式运行?我可以在文件的顶部放置"use strict",但JSlint不批准这个.另一种方法是在每个函数中加上"use strict",但是有更好的选择吗?

Fab*_*tté 6

将所有内容包装在IIFE中,JSLint应该批准.

(function () {
    "use strict";
    //all your code here
}());
Run Code Online (Sandbox Code Playgroud)

请注意,当移动到此立即调用的函数表达式中时,先前在全局作用域中声明的变量/函数将不再可在全局作用域中访问.

您必须将这些显式设置为全局对象的属性,例如window浏览器环境的对象:

(function () {
    "use strict";
    window.someGlobalVariable = "something";
}());
Run Code Online (Sandbox Code Playgroud)

@zzzzBov的解决方案也适用于浏览器和后端环境.