回答
對象文本的上下文中的第一個外是一個語法錯誤。
但是,我相信你問的是函數表達式和函數聲明之間的區別。
您的第一個是函數表達式。您將一個匿名函數分配給一個變量。它的變量定義是,將懸掛到其作用域的頂部,但不是該函數的賦值。
第二個是函數聲明。它的整個身體懸掛在示波器的頂部。
一般而言,通常使用函數表達式,因爲它更具表現力。如果你需要遞歸地調用它(或者爲了更好的詳細的棧跟蹤),你可以給它一個名字,但是記住IE會把這個名字泄漏到外部作用域。
第一個代碼是唯一有效的產生property inside an object definition,就像這樣:通過調用obj.collapse(fold);
第二個功能是使用簡稱
var obj = {
collapse: function(fold)
{
...
...
}
};
這個函數會被稱爲collapse(fold);
至於var name = function() { ... }
和function name() { ... }
之間的差異請參閱:var functionName = function() {} vs function functionName() {}
第一種語法在對象上聲明方法。第二個聲明瞭一個常規函數。
不一定是全局的,除非它在全局命名空間中...... – Nicole 2011-05-17 00:23:19
不一定是全局的。它可以嵌套在另一個函數中。 – 2011-05-17 00:24:41
採取了點。答案已糾正。 – 2011-05-17 00:28:06
第一個是無效的JavaScript,我假設你的意思是=
而不是:
。這在全球範圍內是一樣的,第一個使用匿名函數,第二個只是一些語法糖來命名函數。區別在於,在非全局範圍中,首先會在全局範圍內生成一個函數,第二個將在最近的範圍中創建(對於第一個示例,使用var x = function() {}
的效果相同)。
它實際上是有效的,你最終會得到一個哈希函數嵌入到它,不是一個類,不太功能的土地,當定義回調作爲配置的一部分時很常見。 – Stephen 2011-05-17 00:35:02
第一個問題是無論當前對象是什麼(或者如果沒有當前對象,那麼它將會出錯)併爲其分配函數,都會創建一個名爲「collapse」的屬性。該函數只能通過其相關對象訪問,方法是調用obj.collapse();
的行。
第二個是在全局名稱空間中創建一個名爲「collapse」的函數(即作爲window
上的一個屬性)。該功能可以在任何地方通過做collapse();
來調用。
- 1. 語法差異
- 2. SPARQL語法差異
- 3. Python異常語法差異?
- 4. SQL語句語法差異
- 5. jQuery函數語法差異
- 6. iPhone:差異@selector語法
- 7. 性能差異語法
- 8. event.target jquery:語法差異
- 9. Python乘法表語法差異
- 10. LINQ - 法VS查詢語法差異
- 11. Javascript!和!差異
- 12. 差異與JavaScript
- 13. 差異的JavaScript
- 14. 差異IIF語句
- 15. Java數組聲明的語法差異?
- 16. C#4與ActionScript 3:語法差異
- 17. 用於查找差異的MySQL語法
- 18. AJAX語法的差異:$ .ajax vs $ .post
- 19. 用$ _COOKIE語法差異替換$ _SESSION PHP
- 20. Linq使用SingleorDefault查詢語法差異
- 21. WordPress的功能參數語法差異
- 22. LINQ左外連接語法差異
- 23. php的語法差異unix vs windows
- 24. 的Groovy與Java語法差異
- 25. 舊版本的C語法差異?
- 26. 無效的語法差異,奇怪
- 27. Javascript中異域語法「:?」
- 28. 日期差異Javascript
- 29. 大寫差異(javascript)
- 30. JavaScript編碼差異
讓我換個口吻:這些有什麼區別? – sapiensgladio 2011-05-17 00:21:07
1.分號,2.單詞交換':)' – 2011-05-17 00:22:46