繁体   English   中英

注入函数中的Javascript范围

[英]Javascript Scope in Injected Function

(function(){
    var privateSomething = "Boom!";
    var fn = function(){}
    fn.addFunc = function(obj) {
        alert('Yeah i can do this: '+privateSomething);
        for(var i in obj) fn[i] = obj[i];
    }
    window.fn=fn;
})();

fn.addFunc({
    whereAmI:function()
    {
        alert('Nope I\'ll get an error here: '+privateSomething);
    }
});

fn.whereAmI();

为什么whereAmI()无法访问privateSomething? 以及如何将whereAmI()放在与addFunc()相同的上下文中?

Javascript是词法范围的:名称是指基于名称定义位置的变量,而不是名称的使用位置。 privateSomethingwhereAmI作为本地whereAmI ,然后在全局范围内whereAmI 在任何一个地方都找不到它。

JavaScript有词法范围,而不是动态作用域(除了this )。 http://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scoping_and_dynamic_scoping

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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