ECMA
ECMAScript 简称ES 标准规范
(1)块级作用域
Let 声明的变量不存在变量提升,不允许重复声明
大括号之间的语句块就是块级作用域,大括号里的let、constant是局部的不允许外部访问
面试题: var、let、const三者的区别?
var声明的变量存在变量提升,允许重复声明,只有在函数内声明才是局部变量,不存在块级作用域
let声明的变量不存在变量提升,不允许重复声明const声明的常量,声明后必须赋值,不允许重新赋值
let、const在函数中和在块级作用域下都是局部的,存在块级作用域
let、const在全局作用域声明的也不是全局
var在全局作用域声明的是全局
(2)参数增强
可以给参数设置默认值
function add(a,b,c=0){
b=b||0; //es6之前设置默认值的方式
console.log(a+b+c);
}
add(8000,2000);
如果不提供实参,就会使用默认值0
(3)箭头函数
简化了匿名函数的写法,不等价于匿名函数
()=>{}
var arr=[23,9,78,6,45];
arr. sort (( a,b)=>{
return b-a;
});
console.log(arr);
如果箭头函数的函数体中只有一行代码,并且是return形式,可以进一步简化
var arr=[23,9,78,6,45];
arr. sort (( a,b)=>b-a);
console.log(arr);
练习:
使用函数表达式创建函数(赋值)getAvg,传递任意3个数字,返回平均值。
var getAvg=(a,b,c)=>(a+b+c)/3;
console.log(getAvg(3,6,9));
(4)模板字符串
`反引号之间的字符串就是模板字符串${JS表达式}`
练习:假设获取到了一条商品的数据,格式为对象,包含商品的编号,标题,价格,是否在售(1/O),打印出以下格式
编号:xX .
标题:xx.
价格:xx.XX
是否在售: x.
var laptop={
id:6,
title:'小米',
price:999.99,
onSale:1
}
console.log(`
编号:${laptop.id}
标题:${laptop.title}
价格:${laptop.price.toFixed(2)}
是否在售:${laptop.onSale===1 ? '是' : '否'}
`);