我想在下面的钩子函数中使用全局变量“x”。
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
如何解决错误?
我想在下面的钩子函数中使用全局变量“x”。
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
如何解决错误?
您的代码对我来说很好,但您可能希望x
使用window.x
.
如果不在浏览器环境中,或者不在未调用全局对象的环境中window
,请尝试:
(window || root || global || GLOBAL || this || self || {x: undefined).x
对象文字只是为了{x:undefined}
确保表达式不会引发错误。
我已经列出了我所知道的几乎所有名称,这些名称都赋予(严格来说是无名的)全局对象,只需使用可能适用于您的情况的名称。
另一方面,如果全局变量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
当然,如果你在严格模式下,你也需要小心隐含的全局变量。
这就是我能想到的你的代码出了问题,更多的细节可能会为我们提供一个关于实际发生的事情的线索......
要访问函数内部的全局 Js 变量,请不要在函数范围内使用 Var 并在全局范围内提及 var。例如。
<script>
var foo = "hello";
function fxn() {
alert(foo);
foo = "bai";
}
fxn();
alert(foo+"out side");
</script>