繁体   English   中英

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

[英]what is the difference between var a = {} and var a = function(){}

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

函数是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'

如您所见,函数是一个可以调用的专用对象。 您可以在此处阅读有关Javascript函数的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM