1、var、const、 let
1.0:var 定义的变量是函数级作用域
1.1: const 和 let 块级作用域
const定义的变量,是不能够重新赋值的,所以这个是使用优先级最高的一个语法,它极大保障数据的安全性。
let 跟const 是一样的,只不过它可以重新被赋值
{
var x = 33;
let y =444;
}
console.log(x);//33
//console.log(y);//报错
function aa(){
console.log("pre",xx);//undefined
if(true){
var xx = 1312;
}
console.log("post",xx);//1312
}
aa();
for..var / for..let
//1.异步任务 //2.闭包,词法作用域 //3.var/let 区别 for (var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 0); } //10 个10 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
2、模板字符串
字符串的写法,现在有三种:
const aaa = 'hello,world';
const bbb = "hello,world";
//模板字符串,可以嵌入变量,使用${}占位符
//可以换行 const ccc =`hello,${aaa}`;
3、箭头函数
在箭头函数内部,没有自已的this指针,它使用的this来自父元素的。
var id = 666; var test = { id:2222, yyy:()=>{ console.log("id",this.id);//666 } }
4、结构化赋值
//... -->将数组敞开 var arr =[2,33,444,555]; // 按索引 对应赋值 const [aa,b,...cc] = arr; console.log(aa,b,cc);// 2 33 [444,555] var arr1 = ["你","好","啊","!"]; const vvv = arr + arr1; console.log(vvv);//2 33 444,555你,好,啊,! const ccc1 = [...arr,2324,111,...arr1]; console.log(ccc1);//[2,33,444,555,2324,111,"你","好","啊","!"]