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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 Javascript
js将当前时间格式转换成时间搓(自写)
Sep 26 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
AngularJS 实现JavaScript 动画效果详解
Sep 08 Javascript
微信小程序 animation API详解及实例代码
Oct 08 Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 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
再次研究下cache_lite
2007/02/14 PHP
一段php加密解密的代码
2007/07/16 PHP
php 用sock技术发送邮件的函数
2007/07/21 PHP
PHP学习之数组值的操作
2011/04/17 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
浅谈PHP进程管理
2019/03/08 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
python基于socket实现网络广播的方法
2015/04/29 Python
python实现求特征选择的信息增益
2018/12/18 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
社区包粽子活动方案
2014/01/21 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
法制宣传月活动总结
2014/04/29 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
2016公司年会通知范文
2015/04/25 职场文书
幼儿园六一主持词
2015/06/30 职场文书
婚礼父母致辞
2015/07/28 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书