JS高级第五天
一.ES6
什么是ES6 ?
ES的全称是ECMAScript ,它是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。
为什么使用ES6 ?
每一次标准的诞生都意味着语言的完善,功能的加强。 JavaScript语言本身也有一 些令人不满意的地方。
●变量提升特性增加了程序运行时的不可预测性
●语法过于松散, 实现相同的功能,不同的人可能会写出不同的代码
二.let关键字
let
ES6中新增的用于声明变量的关键字。
2.1let声明的变量只在所处于的块级有效
if (true) {
let a=10;
}
console.log(a) // a is not defined
在一个大括号中使用let关键字声明的变量才具有块级作用域
var关键字不具备这个特点的
2.2不存在变量提升
console.log(a) ; // a is not defined
let a=20;
2.3暂时性死区
var tmp = 123;
if (true) {
tmp ='abc' ;
let tmp;
}
三.const关键字
作用:声明常量 常量就是值(内存地址)不能变化的量。
3.1具有块级作用域
if (true) {
consta=10;
}
console.log(a) // a is not defined
3.2声明常量时必须赋值
const PI; // Missing initializer in const declaration
3.3常量赋值后,值不能修改。
const ary = [100, 200] ;
ary [0] ='a' ;
ary[1] = 'b' ;
console .log(ary) ; // ['a','b'] ;
ary = ['a', 'b'] ; / / Assignment to constant variable.
四.let、 const、 var的区别
1.使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
2.使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
3.使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。
五.解构赋值
ES6中允许从数组中提取值,按照对应位置,对变量赋值。对象也可以实现解构。
5.1数组解构
let[a,b,c]=[1,2,3];
console . log(a)
console .log (b)
console .1og (C)
如果解构不成功,量的值为undefined.
let [foo] = [] ;
let [bar, foo] = [1] ;
5.2对象解构
let person = { name:' zhangsan ',age:20};
let { name, age } = person;
console .1og (name) ; // ' zhangsan
console .1og(age) ; // 20
let {name: myName, age: myAge} = person; // myName myAge属于别名
console .log (mykame) ; // ' zhangsan '
console . log (myAge) ; // 20
六.箭头函数
6.1ES6中新增的定义函数的方式。
() => {}
const fn =()==>{}
6.2函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
function sum (num1 ,num2){
return num1 + num2 ;
}
const sum = (num1 ,num2) = => num1 + num2 ;
6.3如果形参只有一个,可以省略小括号
function fn (v) {
return V ;
}
const fn = v=> v;