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


字符串模板

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

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

可以看出来,字符串模板其实就是将javascript中常用的字符串拼接变得更加简单了一些。但是其实它还有一些不易让人察觉的作用:
1. 模板中可以继续套入一个模板
2. 如果一个变量不是字符串,通过字符串模板它会变成字符串,就好像调用了.toString()方法一样;

但是同样的,有一些事情它也做不了:
1. 它不能自动转义,所以为了防止CORS攻击,我们还是要小心处理一些敏感数据;
2. 它不是用来取代其他js模板的,因为它没有关于循环的相关语法,而这些是其他js模板擅长的。

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

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


剩余参数

接下来说说剩余参数,很多语言早就实现了剩余参数了。剩余参数说来了就是用来取代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!`;
}

初步探究ES6之字符串模板和剩余参数,默认参数相关推荐

  1. c 语言 模板函数参数,深入解析C++中的函数模板和函数的默认参数

    C++函数模板 我们知道,数据或数值可以通过函数参数传递,在函数定义时它们是未知的,只有在发生函数调用时才能确定其值.这就是数据的参数化. 其实,数据类型也可以通过参数来传递,在函数定义是可以不指明具 ...

  2. ES6(二)——字符串模板、标签模板字符串、函数的默认参数、剩余参数、数组对象的展开语法、数值的表示、Symbol

    一.字符串模板基本使用 在ES6之前,如果我们想要将字符串和一些动态的变量(标识符)拼接到一起,是非常麻烦和丑陋的(ugly). ES6允许我们使用字符串模板来嵌入JS的变量或者表达式来进行拼接: 首 ...

  3. ES6学习(模板字符串)

    模板字符串 传统的JavaScript语言,输出模板通常是这样写的. const name = 'Jack'; const age = 18; const sentence = name + ' is ...

  4. ES6中新增字符串方法,字符串模板

    ES6中新增字符串方法,字符串模板 多了两个新方法 startsWith endsWith 返回的是一个Boolean值 let str='git://www.baidu.com/2123123';i ...

  5. ES6 - 字符串模板与新增字符串方法

    字符串模板 解决痛点:简化字符串拼接,比如innerHTML,url等 语法格式:反引号 let name = 'murphy'; let age = 18; console.log(`名字${nam ...

  6. ES6新功能-模板字符串

    ES6新功能-模板字符串 VS 传统JS字符串拼接

  7. ES6, Angular,React和ABAP中的String Template(字符串模板)

    String Template(字符串模板)在很多编程语言和框架中都支持,是一个很有用的特性.本文将Jerry工作中使用到的String Template的特性做一个总结. ES6 阮一峰老师有一个专 ...

  8. [译]JavaScript:ES6中的模板字符串简介

    原文:http://tc39wiki.calculist.org/es6/template-strings/ ES6中的模板字符串(template string)是一种能在字符串文本中内嵌表达式的字 ...

  9. vue解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍1.块级作用域 let const 2.箭 ...

最新文章

  1. TableStore实战:DLA+SQL实时分析TableStore
  2. Qt|OpenGL学习笔记-绕X轴、Y轴、以及XY轴旋转的四边体
  3. 1-2:学习shell之导航文件系统
  4. 二、Java面向对象(7)_封装思想——访问修饰符
  5. python如何监听toast提示信息_python 怎样获取toast?
  6. nginx详解反向代理,负载均衡,LNMP架构上线动态网站
  7. 星巴克在东京开设四层楼的全沉浸式优质咖啡体验门店
  8. Unity Translate方法使用指南
  9. Qt随机数生成器:QRandomGenerator
  10. @PostMapping注解解析
  11. 巴比特 | 元宇宙每日必读:42.46%的人年薪超过20万,元宇宙人才没有想象中的金贵?...
  12. java 时间段求并集_java多个时间段 互相有交集求并集的问题
  13. zabbix 监控下载安装
  14. 国产系统下的DES,SM4工具,银河麒麟V10桌面系统,飞腾芯片
  15. linux用户名设置,怎样更改linux的用户名
  16. easyexcel的动态表头和自定义转换器
  17. Android TextView中间一段文字字体变颜色并且加点击事件
  18. 设计师必备特效生成器合集 2022背景快速制作指南
  19. SpringBoot整合MyBatis遇到的问题(一)
  20. 全国数学建模C题仿真代码

热门文章

  1. Android逆向工程:带你领略MIUI系统的账号安全防范机制:账号是从哪里获取的?
  2. 测试软件jm,软件测试实验三jm.ppt
  3. 解决vlookup函数查找参数不在第一列_if({1,0},,)用法
  4. 选择有限时间内最多的活动数 贪心
  5. Windows上配置host
  6. HTML5超炫酷特效【天空中白云飘动CSS3特效】HTML+CSS+JavaScript
  7. 【转帖】神威瑞思操作系统
  8. 如何将光盘里面的内容复制到电脑中
  9. 工作中对InheritableThreadLocal使用的思考
  10. 分块矩阵乘法+乒乓操作