Mmh*_*Mmh 8 javascript javascript-objects
我想在下面的钩子函数中使用全局变量'x'.
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
Run Code Online (Sandbox Code Playgroud)
如何解决错误?
Eli*_*gem 10
您的代码适用于我,但您可能希望x通过使用显式解析为全局变量window.x.
如果不在浏览器环境或未调用全局对象的环境中window,请尝试:
(window || root || global || GLOBAL || this || self || {x: undefined).x
Run Code Online (Sandbox Code Playgroud)
该{x:undefined}对象字面是只是为了确保表达式不扔了错误.
我已经列出了我所知道的所有名称(严格来说都是无名的)全局对象,只使用那些可能适用于你的情况.
另一方面,如果在调用function()时x 可能会重新分配全局变量,那么a最好使用闭包:
a = (function (globalX)
{
return function a(param)
{
console.log(globalX);
return oldA(param);
};
}(x || window.x));//pass reference to x, or window.x if x is undefined to the scope
Run Code Online (Sandbox Code Playgroud)
当然,如果你处于严格模式,你也需要小心隐含的全局变量.
这就是我能想到的,你的代码出了问题,更多的细节可能会为我们提供实际发生的事情的线索......
| 归档时间: |
|
| 查看次数: |
31026 次 |
| 最近记录: |