这个功用比较简单,但关于后端开辟来讲,会以为会新鲜,参数默认值还须要特别支撑么?答案是一定的,在ES5中, 参数是不能够指定默认值的,一致默以为 undefined, 以下代码:
function say(word) {
word = word || '呵呵!';
console.log(word);
}
console.log(say()); //呵呵!
console.log(say('哈哈!')); //哈哈!
没错,ES2015之前,我们只能这么来操纵参数默认值,但是在ES2015中,就不再须要啦,就和一般的后端言语一样:
function say(word = '呵呵!') {
console.log(word);
}
console.log(say()); //呵呵!
console.log(say('哈哈!')); //哈哈!
是否是就这么完毕啦?固然不是,回到官方手册上,我们看到的是:
Callee-evaluated default parameter values.
参数默认值是被盘算过的,意味着,我们能够写表达式,这个也是其他言语做不到的,看代码:
function defaultWord() {
return '呵呵!';
}
function say(word = defaultWord()) {
console.log(word);
}
console.log(say()); //呵呵!
console.log(say('哈哈!')); //哈哈!
什么叫evaluated, 实在也就是在运用默认值的时刻,相当于JavaScript编译器运用eval盘算一下,出来的效果看成默认值:
function say(word = eval('"呵呵!"')) {
console.log(word);
}
和
function say(word = eval('defaultWord()')) {
console.log(word);
}
另有:
Default parameters are available to later default parameters.
有默认值的参数,对厥后面的参数可用,啥意思?看代码:
function renderScore(name, score = 100, description = (score === 100 ? '(好棒)' : '')) {
console.log(name + '得分: ' + score + description);
}
renderScore('小明');
renderScore('小花', 80);
renderScore('小静', 100);
renderScore('小强', 90, '(加油哦!)');
效果为:
> 小明得分: 100(好棒)
> 小花得分: 80
> 小静得分: 100(好棒)
> 小强得分: 90(加油哦!)
如许,人人都应该清晰了吧?