全局范围+严格模式下的JavaScript变量创建

时间:2014-03-07 08:50:45

标签: javascript

在全球范围内,

之间是否存在差异
this.myvar = 42;

var myvar = 42;

(严格模式,如果重要的话。)

如果是这样,有什么不同,尤其是何时在函数中引用myvar

(问题可能与this有关。)

2 个答案:

答案 0 :(得分:0)

否没有区别。在全球范围内。但如果你进入一个函数并说“this”它仍然指向窗口。这就是为什么通常深入到函数开发人员通常在转到函数并使用var self = this;之前均衡self.variableName;

答案 1 :(得分:0)

在全球范围内,this === window

因此,thiswindow的简单访问者(如C中的指针或PHP中的引用)。

事实上,像var x = 'toto'这样的分配可以通过以下方式获取:

console.log(window.x);

console.log(x);

console.log(this.x);

实施例

var x = 'toto'; // assignment before mythis definition

var mythis = (function(self) { // mythis definition
    return self;
})(this);

var y = 'tata'; // assignment after mythis definition

console.log(mythis.x); // display toto
console.log(this.x); // display toto
console.log(window.x); // display toto

console.log(mythis.y); // display tata
console.log(this.y); // display tata
console.log(window.y); // display tata

实例:

Codepen