企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] 原文: [https://www.jianshu.com/p/db185f252569](https://www.jianshu.com/p/db185f252569) es6更多新功能  [https://www.jianshu.com/p/1897185f8f23](https://www.jianshu.com/p/1897185f8f23) ## 1, 参数写法 支持默认值方式 ``` var link = function(height = 50, color = 'red', url = 'http://azat.co') { ... } ``` ## 2,模板插值语法 ``` var name = `Your name is ${first} ${last}. `; var url = `http://localhost:3000/api/messages/${id}`; ``` ## 3,多行字符串 ``` var fourAgreements = `You have the right to be you. You can only be you when you do your best.`; ``` ## 4,解构赋值 ``` var { house, mouse} = $('body').data(); // we'll get house and mouse variables var {jsonMiddleware} = require('body-parser'); var {username, password} = req.body; ``` ## 5. Enhanced Object Literals (增强的对象字面量)in ES6 ``` var accountServiceES5ObjectCreate = Object.create(serviceBase) var accountServiceES5ObjectCreate = { getAccounts: getAccounts, toString: function() { return JSON.stringify(this.valueOf()); }, getUrl: function() {return "http://" + this.url + ':' + this.port}, valueOf_1_2_3: getAccounts() } ``` ## 6.Arrow Functions in(箭头函数) ES6 ``` //在ES6中就不需要用 _this = this: $('.btn').click((event) =>{ this.sendData(); }) //请注意,只要你愿意,在ES6中=>可以混合和匹配老的函数一起使用。 //当在一行代码中用了箭头函数,它就变成了一个表达式。它将暗地里返回单个语句的结果。 //如果你超过了一行,将需要明确使用return。 //es5: var ids = ['5632953c4e345e145fdf2df8','563295464e345e145fdf2df9']; var messages = ids.map(function (value) { return "ID is " + value; // explicit return }); //用ES6是这样: var ids = ['5632953c4e345e145fdf2df8','563295464e345e145fdf2df9']; var messages = ids.map(value => `ID is ${value}`); // implicit return ``` ## 7.promises ``` //在ES6中我们可以用promises重写: var wait1000 = ()=> new Promise((resolve, reject)=> { setTimeout(resolve, 1000) }); wait1000() .then(function() { console.log('Yay!') return wait1000() }) .then(function() { console.log('Wheeyee!') }); ``` ## 8,块作用域和构造let和const ``` 在ES6代码中,你可能已经看到那熟悉的身影let。在ES6里let并不是一个花俏的特性,它是更复杂的。Let是一种新的变量申明方式,它允许你把变量作用域控制在块级里面。我们用大括号定义代码块,在ES5中,块级作用域起不了任何作用: function calculateTotalAmount (vip) { var amount = 0; if (vip) { var amount = 1; } { // more crazy blocks! var amount = 100; { var amount = 1000; } } return amount; } console.log(calculateTotalAmount(true)); ``` ## 9,类的定义 ``` class baseModel { constructor(options, data) { // class constructor,node.js 5.6暂时不支持options = {}, data = []这样传参 this.name = 'Base'; this.url = 'http://azat.co/api'; this.data = data; this.options = options; } getName() { // class method console.log(`Class name: ${this.name}`); } } ```