Sloppy Mode(非严格模式):
function sloppyFunc() {
sloppyVar = 123;
}
sloppyFunc(); // creates global variable `sloppyVar`
console.log(sloppyVar); // 123
严格模式:
function strictFunc(){
'use strict';
strictVar = 123;
}
strictFunc(); // ReferenceError: strictVar is not defined
有没有办法在功能块内以严格模式声明全局变量?
答案 0 :(得分:1)
您可以读取和写入窗口的属性。
function strictFunc(){
'use strict';
window.strictVar = 123;
}
strictFunc();
console.log(strictVar); // 123
dystroy提醒我,这只能在浏览器中使用。为了提供完整的答案,您可以在node.js中执行此操作:
function strictFunc(){
'use strict';
GLOBAL.strictVar = 123;
}
strictFunc();
答案 1 :(得分:0)
var strictVar; //declare strictVar in global scope for later usage
function strictFunc() {
'use strict';
strictVar = 123; //set strictVar to 123
}
strictFunc(); //call strictFunc();
console.log(strictVar); // => 123
在没有" var"的情况下定义变量是不好的做法。全局范围内使用的关键字。这就是为什么它在严格模式下无法实现的原因。您必须首先使用var关键字在全局范围中声明该变量。然后你可以在一个函数中设置它的值。