你可以在函数体内的JavaScript函数中添加一个属性吗?

时间:2014-04-11 00:08:50

标签: javascript

我知道你可以这样做:

var someFunc = function(){
    //do something
}
someFunc.newProperty = "blah";

然而,这似乎并没有做同样的事情。

var someFunc = function(){
    var newProperty = "blah";
    //do something
}

在第二种情况下,如果我尝试调用someFunc.newProperty,那似乎不会返回" blah"。有什么区别?

2 个答案:

答案 0 :(得分:0)

在第一种情况下,newProperty是someFunc对象的一个​​属性。在第二种情况下,newProperty是一个局部变量,这意味着它在函数执行期间被放置在堆栈中并在之后消失。

答案 1 :(得分:0)

  

有什么区别?

在第一种情况下,您要分配property to the function object。在第二种情况下,您在函数内部定义local variable,该函数仅在执行函数时存在。局部变量不会神奇地成为函数对象的属性。


如果您为该函数指定名称,则可以轻松地为其指定属性:

var someFunc = function name() {
    name.newProperty = "blah";
    //do something
}

但是在执行该功能之前,该属性仍然存在。所以,

someFunc.newProperty;

不起作用,但

someFunc();
someFunc.newProperty;

确实