[英]How to access global variable in function hook in javascript?
我想在下面的鈎子函數中使用全局變量'x'。
var x = 10; //global variable
var oldA = a;
a = function a(param){
alert(x); //showing error: x is undefined
return oldA(param);
}
如何解決錯誤?
您的代碼對我來說很好,但您可能希望使用window.x
明確地將x
解析為全局變量。
如果不在瀏覽器環境中,或者全局對象未被稱為window
的環境中,請嘗試:
(window || root || global || GLOBAL || this || self || {x: undefined).x
{x:undefined}
對象文字只是為了確保表達式不會引發錯誤。
我已經列出了我所知道的所有名稱(嚴格來說都是無名的)全局對象,只使用那些可能適用於你的情況的名字。
另一方面,如果函數( a
)被調用時可能會重新分配全局變量x
,那么閉包將是更可取的:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.