一. 默认参数
我们常常会用这样的方式来定义自己的默认参数,但是试想一下如果是0呢 ,
function man (height, name, age) {
var height = height || '20';
var name = name || 'Jack';
var age = age || '25';
}
es6后我们可以这样了
var man = function(height = 50, name = 'Jack', age = '25') {
...
}
二.模版对象(在字符串中插入变量)
es5方式
var url = 'http://'+url+'.com'
es6方式(反引号并加入新语法${})
var url = `http://${url}.com`
三.多行字符串
es5方式
var str = 'Cambridge English Qualifications are in-depth exams that make '+
'learning English enjoyable, effective and rewarding.'+
'Our unique approach encourages continuous progression with'+
'a clear path to improve language skills. We have qualifications for schools, general and higher education, and business.'
es6后我们只需要将字符串用反引号引用就行了
var str = `Cambridge English Qualifications are in-depth exams that make
learning English enjoyable, effective and rewarding.
Our unique approach encourages continuous progression with
a clear path to improve language skills. We have qualifications for schools, general and higher education, and business.`
四.结构赋值
类似这种
const {name, age} = man
...
五.箭头函数
es5
function man (height, name, age) {
var height = height || '20';
var name = name || 'Jack';
var age = age || '25';
}
es6
const man = (height, name, age) =>{
var height = height || '20';
var name = name || 'Jack';
var age = age || '25';
}
() 其实是可选的,但当超过一个参数的时候就是必须的
六.Promises
之前我们需要使用异步延迟加载的时候可能是这样的
setTimeout(function(){
console.log('延时啦!');
}, 1000);
现在我们可以这么写
var wait = new Promise(function(resolve, reject) {
setTimeout(resolve, 1000);
}).then(function() {
console.log('延时啦!');
});
有时候可能会想,Promises有什么好处呢
有时候我们可能会遇到一些复杂场景,比如需要用到另一个请求结果数据中的数据去完成剩下的逻辑,甚至可能多层嵌套使用
那又可能是这样的
setTimeout(function(){
console.log('哈哈哈');
setTimeout(function(){
console.log('嘿嘿嘿!');
}, 1000)
}, 1000);
。。。
但是是用Promises 后
var wt = ()=> new Promise((resolve, reject)=> {setTimeout(resolve, 1000)});
wt()
.then(function() {
console.log('哈哈哈!')
return wait1000()
})
.then(function() {
console.log('嘿嘿嘿!')
})
再也不用不停的嵌套了
七. let 和 const
可能你会说, let好比是变量, const好比是常量,是的,没错,但也没这么简单
仔细看这句: Let 是一种新的变量申明方式,它允许你把变量作用域控制在块级里面。
function man (is) {
var count = 0;
if (is) {
var count = 1;
}
{
var count = 100;
{
var count = 1000;
}
}
return count;
}
console.log(man(true));
返回的结果是1000 var 只是限制函数作用域。
function man (is) {
let count = 0;
if (is) {
let count = 1;
}
{
let count = 100;
{
let count = 1000;
}
}
return count;
}
console.log(man(true));
返回的结果是1 因为 let 限制块级作用域
function man (is) {
const count = 0;
if (is) {
const count = 1;
}
{
const count = 100;
{
const count = 1000;
}
}
return count;
}
console.log(man(true));
这回返回了0, 因为const 是不可改变的。 初始化后各个块级作用yu互不影响
八.类class
学过java的应该会喜欢这个
九.模块Modules
例如
export var port = 3000;
export function getAccounts(url) {
...
}
然后在其他文件中
import {port, getAccounts} from 'module';
console.log(port); // 3000
暂时总结到这里啦