是否在严格模式下定义了全局var关键字?

时间:2014-07-15 11:15:56

标签: javascript

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

有没有办法在功能块内以严格模式声明全局变量?

2 个答案:

答案 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关键字在全局范围中声明该变量。然后你可以在一个函数中设置它的值。