JavaScript函数是否为“a”;功能“;或一个;“对象”;或者两者都有?

JavaScript函数是否为“a”;功能“;或一个;“对象”;或者两者都有?,javascript,Javascript,我试图了解Javascript函数的行为。它是一个函数还是一个对象,还是两者兼而有之 在JavaScript中,所有函数都是对象 函数是可以调用的对象。(它们有一个内部[[Call]]属性)javascript中的函数是一级对象。所以它们既是函数又是对象 因为它们是第一类对象,所以可以将变量指定给函数并赋予其属性,例如: var addName=function(){}; addName.blah = 1; 如果它们不是第一类对象,您将受限于此语法,但您可以通过两种方式实现: functio

我试图了解Javascript函数的行为。它是一个函数还是一个对象,还是两者兼而有之

在JavaScript中,所有函数都是对象


函数是可以调用的对象。(它们有一个内部[[Call]]属性)

javascript中的函数是一级对象。所以它们既是函数又是对象

因为它们是第一类对象,所以可以将变量指定给函数并赋予其属性,例如:

var addName=function(){}; 
addName.blah = 1;
如果它们不是第一类对象,您将受限于此语法,但您可以通过两种方式实现:

function addName(){}
两者都是

所有内容都是Javascript中的“数据”,包括函数。我觉得这是一个很好的描述方式:

var f = function() { alert('foo'); };
这是对一个变量的赋值,如果你写了,比如:

var f = new String('foo');

无论哪种方式,您都可以编写语句,如
f.bar='baz'将属性指定给对象。唯一的区别是
()
运算符(如果愿意)仅在变量恰好是函数时才起作用
f()
如果它是一个函数,那么它是有意义的
f()
如果它是字符串或其他数据段,则毫无意义。

好吧,我不想说“JavaScript函数是一流的对象”,因为每个人都说过,但是如果您想了解更多关于函数的信息,请看下面这一小页:


顺便说一句,如果你打算学习JavaScript和JQuery,那对你来说是一本免费的在线书。

-1表达式语句(作业是这样的)应该以分号结尾。@Šime Vidas:Dude,当然可以发表评论,但是-1对于a)脱离主题,B)语言允许的东西来说不是有点苛刻吗(即使依赖它是一个非常非常糟糕的主意)?此外,您不能将属性分配给包含原始值的变量。@Šime Vidas:我不是VoteyDisciple。您可以这样做
var f=“foo”;f.bar=4;
。发生的情况是
f.bar
中的
f
被转换为
字符串
,然后它的
bar
属性被赋值,然后转换后的
字符串
值丢失,因为它没有任何引用。但是你可以这样做=)它没有“非常”的含义。它们是函数和对象。@Chad:No+1+1应该包括a,因为人们喜欢在这里到处乱扔这个词。或者更好的是,假设函数是一级对象,而不使用术语“一级”(即,用普通人会理解的方式解释它:“是的,Javascript允许您将函数分配给变量并调用变量…”可能重复