2016-11-30 3 views
1

Manchmal sehe ich zwei verschiedene Möglichkeiten, den Standardwert für Funktionsargumente zu definieren.

Die erste ist, Argument-Wert wie das neu zu definieren:Definieren von Funktionsargumenten als lokale Variablen

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

Das zweite ist lokalen Variablen mit dem gleichen Namen zu definieren:

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

Beide dieser Methoden sind die gleichen arbeiten.
Also habe ich zwei Fragen:
1) Was ist der Punkt, um lokale Variable mit dem gleichen Namen auf die zweite Weise zu definieren?
2) Welche dieser Möglichkeiten ist richtiger?

+1

Die erste ist korrekter, da 'name' bereits in der Funktion definiert ist und keine Neudefinition erforderlich ist. Andererseits können Sie in ES6 beide Verwendungen durch die Standardargumentwerte wie 'var callName1 = function (name =" John ") {...' – Redu

+0

im Wesentlichen gibt es keinen Unterschied, aber hier ist ein Unterschied, wenn Sie es versuchen Um Ihren Code mit einigen Optimizern zu konvertieren, machen Sie Vars zu Leads und so, es verwirrt sie manchmal. – Dellirium

Antwort

6

Es gibt keinen Unterschied zwischen ihnen. var Anweisungen für Variablen, die bereits lokal für die Funktion sind, haben keine Auswirkung.