关于javascript中的函数变量

致电Yallabandi

我是javascript的新手,因此请理解问题是否太幼稚。我听说函数也是javascript中的对象。因此,这意味着函数也可以具有对象之类的属性。所以我尝试了这个:

var foo=function(){
        var v1=1;
        console.log(foo.v1);
    };
    foo();

此输出为undefined我不明白发生了什么。因此,当我v1在函数中声明变量foo,根据结果,v1它不是函数对象的属性foo。如果不是前者,那么它的属性是什么?有人可以向我解释发生了什么吗?

slebetman

对象的属性和变量不是一回事。函数可以具有局部变量(包括函数参数)和属性:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章