ES6的部分语法
const
const 用来定义一个不改变的常量,一旦用const定义,就不能更改,若强制更改会报错。
const Pi = 3.14;
let
用let来定义一个块级作用域,只有在这个作用域内let声明的变量才存在,在这个作用域外部访问声明的变量会报错
for(let i= 0 ; i<5 ;i++){
console.log(i)
}
console.log(i)
for循环会输出0 1 2 3 4 ;在for循环外的会报错 i is not defined
箭头函数
定义形式 :var test = ()=> { //处理程序 }
传参数: var test = (a,b) => { // 处理程序 }
var name="jack";
var obj = {
name:'rousi',
test:function(){
var test1 = ()=>{
console.log(this.name) //obj
}
test1()
},
test:function(){
var test2 = function(){
console.log(this.name) //window
}
test2();
},
test3:function(){
console.log(this.name) //obj
},
}
obj.test3();
与ES5函数的区别: 箭头函数中的this都是指向obj的,而ES5中的this得看调用者是谁才能指向谁。
函数的默认值
在ES6的语法中,我们可以给函数的形参设置默认值;
function ab(a=1,b=2){
return a+b;
}
ab() //3
ab(5,6) //11
解构
var data = {name: 'jack',age:18,sex:'男'}
var {name,sex,age} = data
alert( name ) // jack
反引号 `
在ES5中,一个变量是不能赋值为多行字符串的,因为js的换行符不仅有分号还有回车,如果要写多行字符串就要拼接。例如:
var html = '<ul>'
html += '<li>内容</li>'
html += '</ul>'
在ES6中,反引号可以处理多行字符串
var str = `aa
bb
`;
在``中间我们也可以使用变量,变量名要用${}包裹:例如
var name="jack";
var str = `aa
bb${name}cc
`
console.log(str)
可以输出 :
aa
bbjackcc
Promise
在ES6语法中,提供了Promise对象来实现JS中异步的处理,它可以把异步变为同步:看下面的实例
new Promise(function(res){
setTimeout(function(){
console.log(1111);
res()
},2000)
}).then(function(){
console.log(222)
})
上面是Promise将异步变为同步的基础语法,参数 res是必须要执行的,不然会起不到作用。
如果想将上一次的的返回值作为下一次的参数的话,就需要返回一个值,示例如下:
new Promise(function(res){
setTimeout(function(){
console.log(1111);
res()
},2000)
}).then(function(){
console.log(222)
return new Promise(function(res){
res('要传递的参数')
})
}).then(function(val){
//这里的val就是接收的 return返回的 '要传递的参数'
})