【问题标题】:what is the difference between var a = {} and var a = function(){}var a = {} 和 var a = function(){} 有什么区别
【发布时间】:2015-05-27 03:49:42
【问题描述】:

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

【问题讨论】:

标签: javascript


【解决方案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

【讨论】:

  • 感谢您的回复。因为它们很相似。在哪种情况下,var a = {} 是更好的选择,在哪种情况下,var a = function () {} 是更好的选择?
  • 问这些问题表明缺乏对函数和对象的一般理解。您确实需要查看该语言的基础知识。一个空函数是完全没用的,因为它只是返回 undefined 并且不做任何事情。你不会在我能想到的任何真实场景中使用它。当您在程序中需要一个子例程时,您可以使用一个函数。返回 undefined 并且什么都不做的子程序是没有用的。
  • 对不起,我没有说清楚。我的意思是 var a = { code goes here} 和 var a = function (){ code going here} 。它们不是空的。这两件事可以做同样的事情。那么,在哪种情况下,一个是可取的?
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2019-09-21
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多