簡體   English   中英

如何在javascript函數鈎子中訪問全局變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM