ES6是2015年推出的,非常不错的,目的是用js能有“规格”写大型项目,所以很有必要学习。
let和const命令
const是定义常量,若定义了不能再改变,若改变则会报错。也存在可以改的情况,那就是const定义一个对象,我们修改对象里面的属性。
let是定义变量,和var有什么区别?请看下面
什么叫变量提升:举例一个小demo
<div id="log" class="log"></div>
<script>
console.log("a" + a);
var a = 1;
console.log("b" + b);
let b = 2
function printlog(str) {
document.getElementById('log').innerText = str;
}
</script>
打印出来:
为什么a undefined,而b is not defind,var有变量提升的作用,意思就是把var定义的变量提升到第一行,所以打印出来就是有a了。var,function均可以变量提升。
将上述代码整理使用模板语言,什么是模板语言
因为他很方便不需要组装
<div id="log" class="log"></div>
<script>
// 这个里面就是填写``模板语言,可正常打印,可自动换行,效果可以自行张贴查看
var sat = `
console.log("a" + a);
var a = 1;
console.log("b" + b);
let b = 2
`
printlog(sat);
function printlog(str) {
document.getElementById('log').innerText = str;
}
</script>
总结:在实际开发尽量用let定义,好处是,let是块作用域(局部作用域),var定义会存在内存泄露,经常在实际开发中用var定义a,而a之前有定义,就存在未销毁情况,let定义变量会及时销毁
箭头函数
var arr=[3,6,9];
var newarr=arr.map(function (item){
return item +2;
})
//下面是箭头函数表示上述的意思
var newarr=arr.map((item)=>item+2);//函数代码大于两行则需要使用大括号
经常用箭头函数的好处是:代码会更清晰,代码量也会减少,强烈推荐使用箭头函数,确实很方便。当然有个重要的好处是this的使用,若在函数内的this是指向当前对象,而不是外部的this。若使用箭头函数,里面和外面的this会保持一致。
字符串、对象、数组和函数的解构
//数组解构:一一对应,
var [a,b,c]=[1,2,3];
//字符串解构:一一对应,
var [a,b,c]="ABC";
//对象解构:一一对应,
var {m,n}={m:10,n:20};
//函数解构:
function sum([x,y]){
return x+y;
}
sum([2,8]);
Rest参数
三个点的介绍
//...点代表不确定传入多少个参数
let sum001 = (...m) => {
let total = 0;
for (var i of m) {
total += i;
}
console.log(`total:${total}`);
}
sum3(4, 8, 9, 10);//
//...点和数组结合称函数的拓展,将4,8进行拆解
console.log(...[4, 8]);
//x为4,y为8,10,30数组
var [x, ...y] = [4, 8, 10, 30];
let [a, b, c] = "ES6";
模块化开发方案:AMD、CMD、CommonJs和ES6对比
AMD是RequireJS在推广过程中对模块的定义的规范化产出。依赖前置,异步模块定义。
CMD是SeaJS(淘宝官方提供)在推广过程中对模块定义规范化产出,没有依赖前置,依赖就近,同步的意思,即用即返回
CommonJs module.exports规范,使用在node开发推荐的(服务端)。
ES6特性exprot/import,导出才能导入
未完待续。。。