ES6字符串模板,剩余参数,默认参数功能与用法示例


Posted in Javascript onApril 06, 2017

本文实例讲述了ES6字符串模板,剩余参数,默认参数功能与用法。分享给大家供大家参考,具体如下:

这里介绍一下字符串模板以及剩余参数,默认参数的概念以及使用。
先来说说字符串模板。

字符串模板

ES6中允许使用反引号 ` 来创建字符串,此种方法创建的字符串里面可以包含由美元符号加花括号包裹的变量${varible}。如果你使用过像C#等后端强类型语言的话,对此功能应该不会陌生。

//产生一个随机数
var num=Math.random();
//将这个数字输出到console
console.log(`your num is ${num}`);

可以看出来,字符串模板其实就是将JavaScript中常用的字符串拼接变得更加简单了一些。但是其实它还有一些不易让人察觉的作用:

1. 模板中可以继续套入一个模板;

2. 如果一个变量不是字符串,通过字符串模板它会变成字符串,就好像调用了.toString()方法一样;

但是同样的,有一些事情它也做不了:

1. 它不能自动转义,所以为了防止CORS攻击,我们还是要小心处理一些敏感数据;

2. 它不是用来取代其他js模板的,因为它没有关于循环的相关语法,而这些是其他js模板擅长的。

下图是字符串模板的使用示例:

ES6字符串模板,剩余参数,默认参数功能与用法示例

可以看到字符串模板中还可以解析函数,并且可以带参数。

剩余参数

接下来说说剩余参数,很多语言早就实现了剩余参数了。剩余参数说来了就是用来取代arguments的。

大家应该知道arguments吧,作为javascript函数中的默认属性,arguments代表了所有的参数。

arguments功能虽然强大,但是容易让人疏忽从而造成不必要的错误。我们举一个例子,我们先一个简单的验证函数containsAll ,其作用是检测第一个参数中是否包含后面几个参数。

比如:

containsAll("banana", "b", "nan") //会返回 true,
containsAll("banana", "c", "nan") //会返回 false。

实现代码如下:

function containsAll(haystack) {
 for (var i = 1; i < arguments.length; i++) {
  var needle = arguments[i];
  if (haystack.indexOf(needle) === -1) {
   return false;
  }
 }
 return true;
}

可以看到我们用到了arguments对象,但是它的下标我们是从1开始的,如果从0开始就会选中haystack了,所以不能选择0,而这里就最容易出错。

那么我们看看用ES6的剩余参数如何来实现这个方法:

function containsAll(haystack, ...needles) {
 for (var needle of needles) {
  if (haystack.indexOf(needle) === -1) {
   return false;
  }
 }
 return true;
}

可以看到剩余参数…的特定语法。也就是说,所有第2到第n个参数现在可以直接放到…后面的数组中去了。

…的用法可不仅仅局限于函数的参数噢,还可以用来简化:

var a = [2,3,4];
var b = [ 1, ...a, 5 ];
console.log( b );// [1,2,3,4,5]

默认参数

再来谈谈默认参数,默认参数也早就被很多语言所实现,其实是一个很基本的功能:

function animalSentence(animals2="tigers", animals3="bears") {
  return `Lions and ${animals2} and ${animals3}! Oh my!`;
}

不同的参数会返回不同的结果:

animalSentence()//"Lions and tigers and bears! Oh my!";
animalSentence("elephants") //"Lions and elephants and bears! Oh my!"
animalSentence("elephants", "whales")//"Lions and elephants and whales! Oh my!".

但是javascript的默认参数功能可不只这么简单,它还可以进行简短的表达式:

function animalSentenceFancy(animals2="tigers",animals3=(animals2 == "bears") ? "sealions" : "bears")
{
 return `Lions and ${animals2} and ${animals3}! Oh my!`;
}

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
prototype Element学习笔记(Element篇三)
Oct 26 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
iScroll.js 使用方法参考
May 16 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
简单实现js菜单栏切换效果
Mar 04 Javascript
webstorm添加vue.js支持的方法教程
Jul 05 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
Apr 28 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
Aug 27 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 #Javascript
javascript中this用法实例详解
Apr 06 #Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 #Javascript
js遍历获取表格内数据的方法(必看)
Apr 06 #Javascript
JS优化与惰性载入函数实例分析
Apr 06 #Javascript
大白话讲解JavaScript的Promise
Apr 06 #Javascript
JS实现的二叉树算法完整实例
Apr 06 #Javascript
You might like
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP开发中常用的三个表单验证函数使用小结
2010/03/03 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
js 操作css实现代码
2009/06/11 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
js+html5实现侧滑页面效果
2017/07/15 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
面向对象概念面试题(.NET)
2016/11/04 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
申请吧主发表的感言
2015/08/03 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python