漂亮的5个es6技巧演示
来源:互联网 发布:中元华电软件 编辑:程序博客网 时间:2024/05/01 12:41
1. 通过参数默认值强制要求传参
ES6 指定默认参数在它们被实际使用的时候才会被执行,这个特性让我们可以强制要求传参:
/**
* Called if a parameter is missing and
* the default value is evaluated.
*/
function mandatory() {
throw new Error("Missing parameter");
}
function foo(mustBeProvided = mandatory()) {
return mustBeProvided;
}
函数调用 mandatory() 只有在参数 mustBeProvided 缺失的时候才会被执行,测试结果如下:
> foo()
Error: Missing parameter
> foo(123)
123
2. 利用for-of来循环来遍历数组元素的索引
es5的做法:
var arr = ['a','b','c'];
arr.forEach(function(elem,index){
console.log("index="+index+',elem='+elem);
})
ES6 的 for-of 循环支持 ES6 迭代(通过 iterables 和 iterators)和解构。如果你通过数组的新方法 enteries() 再结合解构,可以达到上面 forEach 同样的效果:
arr.enteries() 通过索引-元素配对返回一个可迭代对象,没有生成其他东西,只是让这个数组变成了对象。然后通过解构数组 [index, elem] 直接得到每一对元素和索引。console.log() 的参数是 ES6 中的模板字面量特性,这个特性带给字符串解析模板变量的能力。const arr = ["a", "b", "c"];
for( let[index,elem] of arr.entries() ){
console.log(`index=${index},elem=${elem}`);
}
3. 通过变量解构交换两个变量的值
如果你将一对变量放入一个数组,然后将数组解构赋值相同的变量(顺序不同),你就可以不依赖中间变量交换两个变量的值:
可以想象,JavaScript 引擎在未来将会针对这个模式进行特别优化,去掉构造数组的开销。var one = 'anikin';
let two = 'jack';
[one,two] = [two,one]
console.log(`one=${one}`); // jack
console.log(`two=${two}`); // anikin
4.通过模板字面量(template literals)进行简单的模板解析
ES6 的模板字面量与文字模板相比,更接近于字符串字面量。但是,如果你将它们通过函数返回,你可以使用他们来做简单的模板渲染:
const tmpl = addrs => `
${addrs.map(addr => `
${addr.first}${addr.last}
`).join("")}
`;
const data = [
{ first: "", last: "Bond" },
{ first: "Lars", last: "" },
];
console.log(tmpl(data));
5.遍历 Unicode 表示的字符串
一些 Unicode 编码的字由两个 JavaScript 字符组成,例如,emoji 表情:
字符串实现了 ES6 迭代,如果你通过迭代来访问字符串,你可以获得编码过的单个字(每个字用 1 或 2 个 JavaScript 字符表示)。例如:
for (const ch of "xuD83DuDE80y") {
console.log(ch.length);
}
// Output:
// 1
// 2
// 1
- 漂亮的5个es6技巧演示
- 关于做演示的7个技巧!
- 分享15个漂亮的CSS菜单导航(在线演示打包下载)
- 5个国外最漂亮的网站
- 软件产品的演示技巧
- 软件产品的演示技巧
- 演示的专业技巧
- 六个漂亮的 JavaScript6 技巧
- 《外贸七日通》第三日 技巧篇:讨价还价,签个漂亮的合同
- 漂亮的menu 9个
- 30个漂亮的网站
- 推荐5个漂亮的jquery主流图表插件
- 推荐5个漂亮的jquery主流图表插件[转]
- 精选 5 个漂亮的 CSS3 图片滑过特效
- 用WPS演示制作漂亮的艺术字体动态效果
- 漂亮的CSS3圆角按钮组合DEMO演示
- 在 ES6中 改良的5个 JavaScript “缺陷”
- 漂亮菜单的实现原理与技巧
- 串的顺序存储结构与运算
- 两副图让你彻底明白同步IO和异步IO的区别
- eclipse上来就该配置
- node---path对象
- ES6/ES2015核心内容
- 漂亮的5个es6技巧演示
- 【unity 笔记】ugui艺术字体
- GCC主要数据结构之omp_clause_mask
- npm install p --save跟npm install p --save-dev的区别
- CSS常见兼容性问题总结
- 新一代开源Android渠道包生成工具Walle
- 流量统计
- portal-ext.properties文档说明
- 全方位解析npm以及其全局安装本地安装中的一些区别