在 javascript 方法中声明一个变量似乎将它的范围限定到 window-object,有什么办法可以改变这种行为?
var mf = new Array();
mf.init = function () {
oldIh = 10;
this.oldIh = 20;
alert(oldIh); //outputs 10, would prefer 20...
alert(window.oldIh); //outputs 10.
}
挺纠结的。。
1)不允许使用var来声明this.varaibleName
2)在方法内部使用var定义了一个仅限方法的变量。
3)不使用VAR也不这创建了一个窗口变量(不严格模式允许)
4) 解决方案是使用this.variableName而不使用var这即使在严格模式下也很好。
'use strict';
var mf = new Array();
mf.init = function () {
this.oldIh = window.innerHeight;
//Not allowed:
//var this.oldIh = window.innerHeight;
//
//Creates a var for this method only
//var oldIh = 123;
//
//Creates a window-variable (not allowed in strict mode)
//oldIh = 123;
}
mf.getInnerHeight = function () {
return this.oldIh;
}
mf.init();
alert(mf.getInnerHeight());
感谢所有为该主题做出贡献的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句