es6介绍+let和const
1.什么是ES6
JavaScript es3+es5
Es6是ECMAScript6的简写
2.ES 与js区别
Es是js的语法部分(规定了js的核心语法),js是一门复合技术,包含ES、DOM、BOM等技术。ES是js的语法,与宿主环境无关,es既可以在浏览器中运行,又可以在其他平台运行(例如:nodejs)
3.ES6的兼容性问题
在低版本浏览器上不可以使用,每一年ES6都会有新的更新
let和const
1.let
let是用来声明变量的
1)在ES5中,声明变量的关键字:var function
2)在ES6中,var 和function依然可以使用,let/const/class
3)let定义变量
4)let和var定义变量的区别
a.var定义的变量是函数作用域,let定义的变量是块级作用域
b.var定义的变量存在变量提升,let不存在
c.let定义的变量,必须先定义再使用,不允许重复定义
d.let定义的变量,会出现暂时性死区
e.let和const定义的变量不会绑定到顶层对象(window)
优点:let定义的变量不会产生作用域污染问题,不会覆盖…
案例:
var arr = [];
for (let i = 0; i < 5; i++) {
//在数组中插入元素(函数)
arr.push(function () {
console.log(i);
});
}
//分析执行过程:每一次for循环执行,都是一个新的代码块
//系统会记录每一次循环执行完毕之后,变量的值,再新一次循环执行时,赋值给下一次的变量
{ //父作用域
let i = 0;
if (i < 5) {
arr.push(function () { //子作用域
console.log(i);
});
}
i++;
}
//第二次:
{
let i = 1;
if (i < 5) {
arr.push(function () {
console.log(i);
});
}
}
//...
执行过程:
let变量声明之后,生成了一个大的块级作用域;在这个大的块级作用域里,会产生两个作用域,一个父级作用(),一个是子级作用{};父级作用域保存上一次循环后的值,下一次使用,子级作用域是独立的,是基于上一次循环的值,再进行计算;一直到循环结束;。
2.const
const也是用来定义变量(常量)
特点:
0)一旦初始化完毕,不能被修改
1)不能重复定义
2)不存在变量提升
3)先定义,再使用
4)块级作用域
5)定义的时候,必须初始化
一般情况下,常量的名称应该使用大写字母
const使用场景:
1)、数学中的PI的声明
2)、多人开发的时候,通用、公共的模块数据可以使用const常量,防止被覆盖和修改
特殊情况:const修饰引用类型:
//设置引用类型不能被修改
const obj = Object.freeze( {
sName: “jack”,
age: 18
});
还没有评论,来说两句吧...