2016-11-30 109 views
1

有時我會看到兩種不同的方式來定義函數參數的默認值。

第一個是重新定義這樣的參數值:將函數參數定義爲局部變量

var callName1 = function(name) { 
name = name || 'John'; 
console.log('Hello, ' + name); 
}; 

第二個是定義具有相同名稱的本地變量:

var callName2 = function(name) { 
var name = name || 'John'; 
console.log('Hello, ' + name); 
} 

的這個方法兩者都工作是相同的。
所以,我有兩個問題:
1)第二種方式定義具有相同名稱的局部變量有什麼意義?
2)哪種方法更正確?

+1

由於函數中已經定義了'name',並且不需要重新定義,所以第一個更加正確。另一方面,在ES6中,您可以通過默認參數值避免這兩種用法,例如'var callName1 = function(name =「John」){...' – Redu

+0

基本上沒有區別,但是當您嘗試時儘管將代碼轉化爲一些優化器,但讓它變得容易讓它變得混亂。 – Dellirium

回答

6

它們之間沒有區別。已經對函數本地化的變量的語句var不起作用。