我是javascript的新手,因此请理解问题是否太幼稚。我听说函数也是javascript中的对象。因此,这意味着函数也可以具有对象之类的属性。所以我尝试了这个:
var foo=function(){
var v1=1;
console.log(foo.v1);
};
foo();
此输出为undefined
。我不明白发生了什么。因此,当我v1
在函数中声明变量时foo
,根据结果,v1
它不是函数对象的属性foo
。如果不是前者,那么它的属性是什么?有人可以向我解释发生了什么吗?
对象的属性和变量不是一回事。函数可以具有局部变量(包括函数参数)和属性:
function foo () {
v1 = 1; // this is a local variable
return [
v1, // local var above
foo.v2 // object property
]
}
foo(); // returns [1,undefined]
foo.v2 = 2;
foo(); // returns [1,2]
因此,您可以看到,函数确实是对象。但是函数内部的变量与函数是对象这一事实无关。
旁注:函数是一类对象,并且可以匿名定义(没有名称)函数是两个不同的特征。例如,在C语言中,函数也是一流的对象-也就是说,您可以将它们分配给函数指针。但是在C语言中,您不能在没有名称的情况下声明函数。
function bar() {}
b = bar; // this demonstrates that functions are first-class objects
c = function(){}; // this demonstrates that functions can be anonymous
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句