簡體   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