我对这两个感到困惑,var a = {}和var a = function(){}
a是第一种情况下的对象,a是第二种情况下的函数。而功能也是一个对象。有什么区别?
答案 0 :(得分:1)
函数是Javascript中的一种对象,但空函数(function(){}
)与空对象({}
)非常不同。查看差异的最简单方法是执行它们并查看它们的不同之处。使用控制台,你可以玩,看看它们是如何不同的。
var emptyFunction = function() {}
console.log(emptyFunction) // function(){}
console.log(typeof emptyFunction) //"function"
var emptyObject = {}
console.log(emptyObject) //Object{}
console.log(emptyObject) // "object"
emptyFunction() // returns undefined because your function has no return
emptyObject() // Uncaught TypeError: object is not a function

首先,typeof
运算符表示它们的类型是不同的东西。它向您展示了Javascript对类型的看法最后一行是您真正开始看到差异的地方。可以使用()
来调用函数来调用它。一个对象没有这种能力,它会导致错误,因为Object类型没有为其定义涉及使用()
正如您所指出的,函数只是一种特定类型的对象,因此它可以对对象执行相同类型的操作。所以我们可以这样做:
emptyFunction.foo = function(){ return 'foo';}
console.log(emptyFunction.foo()) //'foo'
emptyObject.bar = function(){ return 'bar';}
console.log(emptyObject.bar()) //'bar'
正如你所看到的那样,区别在于函数是一个可以调用的专用对象。 You can read more about functions in Javascript here