2016-11-30 112 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不起作用。