Es6
ES6 语法
1.1 let/const/var
const 定义的变量,是不能够重新赋值的。所以这个是使用优先级最高的个语法,他能极大保障数据的安全性。
let 跟 const 是一样的,只不过它可以重新被赋值。
let 跟 const 是块级作用域,但是 var 是函数级作用域。
{ var x = 333; let y = 444; } console.log(x); // console.log(y); 报错 function msg() { console.log("pre", x); //undefined if (true) { var x = 323; } console.log("post", x); //323,记住,var定义的变量是函数级别的作用域 }
msg();
for..var / for..let:
//1.异步任务 //2.闭包,词法作用域 //3.var/let 区别 for (let i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 0) } //0....9 for(var i=0;i<10;i++){ (function(){ var j= i; setTimeout(function(){ console.log(j); },0) })(); } //手动实现重新绑定,输出也是0...9
//模板字符串
//字符串的写法,现有三种
const aaa ='hello,world'
const bbb = "hello,wrold"
//模板字符串,可以嵌入变量,使用${}占位符
//可以换行
const ccc = 'hello,${aaa}'
//箭头函数
//在箭头函数内部,没有自己的this指针,它使用的this是来自父元素的
var id = 666; var ooo = { id:333, xxx: ()=>{ console.log('id',this.id);//666 } }
//结构化赋值
var arr =[22,33,44,66]; /* var a = arr[0]; var b = arr[1]; var C = arr[2]; */ const[aa,bb,...cc]=arr; console.log(aa,bb,cc);
const[aa,bb,...cc]=arr;
console.log(aa,bb,cc);
const {e,f}={e:333,f:444,g:555};
const a1 = ['Hello ,wrold'];
const a2 = [2,3,4,5];
const a3 =a1+a2;
console.log(a3);//Hello ,wrold,2,3,4,5
const ccc1 = [...arr,2324,111,...a1];
console.log(ccc1);//[22,33,44,66,2324,111,Hello ,wrold]