[英]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.