我知道你可以这样做:
var someFunc = function(){
//do something
}
someFunc.newProperty = "blah";
然而,这似乎并没有做同样的事情。
var someFunc = function(){
var newProperty = "blah";
//do something
}
在第二种情况下,如果我尝试调用someFunc.newProperty,那似乎不会返回" blah"。有什么区别?
答案 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;
确实