JavaScript 中,定義函式時用 var foo function 和 function foo 有什麼區別?

時間 2021-05-29 22:56:19

1樓:

說乙個區別:

varfoo

=function

()是表示式、函式表示式;

function

foo()

是語句、函式宣告。

function 開頭會被當做函式宣告,不能直接呼叫:

function

foo()

()// Uncaught SyntaxError: Unexpected token )

函式表示式可以:

varfoo

=function

()()

2樓:鄭迅

為什麼是4?

var getName = function()function getName()

getName()

3樓:zzz40500

這個是變數提公升的問題.

第一是將變數var foo 往上提公升. 而賦值沒有提公升. 所以你在方法1前面呼叫foo() 就有問題了

第二是將foo整個方法提公升, 申明和賦值一起提公升. 所以你在方法2前面呼叫foo() 沒有問題.

4樓:

定義函式時var fn = function(){} 和 function fn(){} 的區別 http://www.leojs.com/blog/209

5樓:bigbrother3

補充一下,var f=foo(){}這種變數賦值的函式在setTimeout能有效執行,但是匿名函式可能會不執行,具體原因不太清楚,我的環境是小公尺三,4.4版本系統

6樓:春雷

方法一:

var foo = function ()這種方法定義了命名空間為foo,避免和其它類庫的方法名重複。

方法二:

function foo ()

這是一般的寫法,容易在使用各種外掛程式時產生命名衝突。

JavaScript中函式都是值傳遞嗎?

Marq 世界萬物,皆有因果。事實上,大部分語言函式都是按照值傳遞,乙個被定義的初始變數,希望可以被複製,去改變複製之後的值,但不希望被改變本身。就像我發明了乙個東西,我可以讓你去生產,但是你不能把我的專利變成你的,否則世界就亂了。這個時候對ES6進行深入理解,去了解let,const的真正意義吧!...

C 中是否允許在函式中定義函式?

暗能量泡泡 C 不能支援直接在函式中定義函式。C 11通過支援Lambda函式 實際上是個匿名class的物件 來實現類似功能。其他方式可以使用函式中定義struct class的方式再定義其靜態成員函式的方式來模擬一樣的效果。 Johnny Wong 可以使用class struct的實現,它們支...

在JavaScript中,當給建構函式的物件重新賦值之後,再建立物件,為什麼物件的建構函式變成Object了?

蘇哈哈 已經過了這麼久想必題主已經搞明白了,但是木有人回答為什麼這樣設計嗎。我來強答一波加深自己的印象咯。的確靈異,的確應該是constructor設計上迷惑初學者的地方,constructor只是prototype上的乙個物件而已。我猜把constructor設計為prototype上的物件本意應...