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

Javascript 是否在严格模式下定义了全局变量关键字?,javascript,Javascript,松散模式(非严格模式): 严格模式: 有没有办法在函数块内以严格模式声明全局变量?您可以在窗口中读取和写入属性 function strictFunc(){ 'use strict'; window.strictVar = 123; } strictFunc(); console.log(strictVar); // 123 dystroy提醒我这只能在浏览器中使用。为了提供完整的答案,以下是您在node.js中的操作方法: function strictFunc(){

松散模式(非严格模式):


严格模式:



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

您可以在窗口中读取和写入属性

function strictFunc(){
   'use strict';
   window.strictVar = 123;
}
strictFunc(); 
console.log(strictVar); // 123
dystroy提醒我这只能在浏览器中使用。为了提供完整的答案,以下是您在node.js中的操作方法:

function strictFunc(){
   'use strict';
   GLOBAL.strictVar = 123;
}
strictFunc(); 

在全局范围内定义变量时不使用“var”关键字是不好的做法。这就是为什么在严格模式下是不可能的。您必须首先使用var关键字在全局范围内声明该变量。然后,您可以在函数中设置其值。

您可以直接将变量附加到全局对象(请参见答案),但通常当您需要干净的代码时,而不是当您希望函数声明全局变量时,您会编写
“use strict”
。是的,我只是想在阅读一本书时知道,谢谢…@parcquant我真的忘记了window。或者,如果像那样调用它,
this.strictVar
也应该可以工作。@scimonester但这是用于实例的,不是吗?@C-linkNepal是的,未绑定的函数是在
this
设置为全局的情况下执行的。我的意思是,绑定到特定上下文,例如使用function.call(mycontext)我真的提到了使用内部功能块。无论如何,谢谢你。
function strictFunc(){
   'use strict';
   window.strictVar = 123;
}
strictFunc(); 
console.log(strictVar); // 123
function strictFunc(){
   'use strict';
   GLOBAL.strictVar = 123;
}
strictFunc(); 
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