资讯专栏INFORMATION COLUMN

ES2015入门系列4-参数默认值

Shisui / 2700人阅读

摘要:这个功能比较简单,但对于后端开发来说,会觉得会奇怪,参数默认值还需要特殊支持么答案是肯定的,在中参数是不可以指定默认值的,统一默认为如下代码呵呵呵呵哈哈哈哈没错,之前,我们只能这么来操作参数默认值,但是在中,就不再需要啦,就和普通的后端语言

这个功能比较简单,但对于后端开发来说,会觉得会奇怪,参数默认值还需要特殊支持么?答案是肯定的,在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(加油哦!)

这样,大家都应该清楚了吧?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83729.html

相关文章

  • ES2015入门系列1-初识ES2015

    EcmaScript 其实是一种语言规范,常见的 JavaScript, ActionScript 等都是其具体实现,平时使用中一般可以将其和Javascript对等称呼,本系列教程主要讲述 EcmaScript2015(ES6) 为JavaScript带来的新的特性,并初步掌握如何利用其进行开发。 本系列面向有一定基础知识的ES5使用者,不适合初学者。 先来看两段代码: Human.js exp...

    hellowoody 评论0 收藏0
  • ES2015入门系列6-Rest和Spread

    摘要:就是的逆操作,看代码计算一个数组大于三个元素中前三个元素的和以及所有元素的和。前三个值为总和为结果前三个值为总和为前三个值为总和为 ES2015为我们带来了一个新的操作符: ..., 用于定义函数参数的地方,称之为 Rest 用于调用函数的地方,称之为 Spread 我们一个个来分析: Rest 写程序的时候或多或少都会有,传入不定参数给一个函数的需求,如,给一个班级加入学生名单,...

    keelii 评论0 收藏0
  • ES2015入门系列5-解构赋

    摘要:用过的同学肯定见过类似下面的代码这就是为带来的另一个新的语法解构赋值。解构赋值是用来让我们从数组或者对象中提取数据赋值给不同的变量。解构赋值操作不会抛错,如果没有找到,将会用赋值过去。 用过ReactNative的同学肯定见过类似下面的代码: import { Text, View } from react-native; 这就是ES2015为JavaScript带来的另一个新的语法:...

    chuyao 评论0 收藏0
  • 2017-06-29 前端日报

    摘要:前端日报精选如何在非项目中使用知乎专栏编码规范最常被遗忘的性能优化浏览器缓存个人文章译统一样式语言掘金新的开发者提及最多的个视频众成翻译中文第期在中使用译统一样式语言掘金前端现状答题救不了前端新人相学长怼前端岁以 2017-06-29 前端日报 精选 如何在非 React 项目中使用 Redux - 知乎专栏Javascript编码规范 - Clearlove - SegmentFau...

    gaosboy 评论0 收藏0
  • es6快速入门

    摘要:快速入门简介以下简称是语言的下一代标准,已经在年月正式发布了。而且声明后必须立即初始化赋值,不能后面赋值。方法默认返回实例对象即,可以指定返回另外一个对象。参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 es6快速入门 showImg(https://segmentfault.com/img/remote/1460000008519223?w=560&h=314); ES6简...

    liujs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<