var a = {}和var a = function(){}之间有什么区别

时间:2015-03-23 23:33:51

标签: javascript

我对这两个感到困惑,var a = {}和var a = function(){}
a是第一种情况下的对象,a是第二种情况下的函数。而功能也是一个对象。有什么区别?

1 个答案:

答案 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