简体   繁体   中英

How to access global variable in function hook in javascript?

I want to use global variable 'x' in the below hook funcion.

var x = 10; //global variable

var oldA = a;    

a = function a(param){

    alert(x);        //showing error: x is undefined 

    return oldA(param);

}

How to resolve the error?

Your code works fine for me, but you might want to resolve x to the global variable explicitly by using window.x .
When not in a browser environment, or an environment where the global object isn't called window , try:

(window || root || global || GLOBAL || this || self || {x: undefined).x

The {x:undefined} object literal is just to make sure the expression doesn't throw up errors.
I've listed pretty much all names I know of that are given to the (strictly speaking nameless) global object, just use the ones that might apply to your case.

On the other hand, if the global variable x might be reassigned by the time the function ( a ) gets called, a closure would be preferable:

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

Of course, if you're in strict mode, you need to be careful with implied globals, too.
That's all I can think of that is going wrong with your code, some more details might provide us with a clue of what's actually happening...

To access global Js variable inside function, don't use Var in function scope and mention var in global scope. Eg.

<script>
    var foo = "hello";
    function fxn() {
        alert(foo);
        foo = "bai";
    }
    fxn();

    alert(foo+"out side");
</script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM