ECMA -> ECMAScript -> ES
标准规范
ES6: js的第6套标准规范
1. let
var
- 关键字定义的变量可以在使用后声明,也就是变量可以先使用再声明。
//var a //会将第三行的var a提到最前面,提前声明变量
console.log(a); //undefined
var a = 1; //有var才提升
console.log(a); //1
1.1 let特点
-
let在全局声明在window中也找不到
-
不允许提前使用let变量,也就是变量需要先声明再使用,存在块级作用域。
-
同一作用域内不允许重复声明两个同名let变量
console.log(a); //引用报错ReferenceError:
let a = 1; //let不再存在提升
console.log(a); //1
1.2 let底层原理
示例:
let a = 100;
↓
(function(){
var _a = 100;
})()
块级作用域:解决全局污染
大括号之间的语句块就是一个块级作用域,例如:if、else、while、do-while、for…
在块级作用域下,let和const声明的都是局部的,无法被块级作用域以外访问到。
{//块级作用域
var c = 3;
let d = 4;//局部变量
const e = 5;//局部常量
}
console.log(e);
var let const三个区别
- var声明的变量存在提升,在同一个作用域下可以重复声明同一个变量
- let声明的变量不存在提升,在同一个作用域下不允许重复声明同一个变量,存在块级作用域,即使在全局作用域下let声明的变量也不是全局的
- const 声明的时候必须赋值,不允许重新赋值,存在块级作用域
2.参数增强
function fn(a, b, c=0) {
//es6之前设置参数的默认值方式
//c = c || 0;
console.log(a, b, c);
}
fn(10000,2000,500);
//未出现的实参就会使用默认值
fn(10000,2000);//1000,2000,0
fn(10000);//NaN
3.箭头函数
()=>{ }
简化了匿名函数的写法(去掉function,小括号和大括号之间使用箭头),不等价于匿名函数
var arr = [23,9,78,6,45];
arr.sort( (a,b)=>{
return a-b;
} )
箭头函数的函数体重只有一行代码,并且是return形式,简化为:
arr.sort((a,b)=>a-b)
示例:用箭头函数求三个数的平均值
//方法一
var pingjun=(a,b,c)=> {
return (a+b+c)/3;
};
//方法二
var pingjun= (a,b,c)=> (a+b+c)/3;
console.log(pingjun(1,2,3));
4.模板字符串
解决了字符串的拼接问题
\` 模板字符串 ${JS表达式} \`
反引号(`)标识,它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
// 普通字符串
console.log(`In JavaScript '\n' is a line-Feed.`)
// 多行字符串
console.log(`In JavaScript this is
not legal.`)
var name = "ERYA", time = "tomorrow";
console.log(`
Hello ${name},
how are you ${time}?
`);
var emp = {
eid: 2,
ename: 'erya',
sex: 0,
salary: 50000
};
console.log(`
编号:${emp.eid}
姓名:${emp.ename}
性别:${emp.sex ? '男' : '女'}
工资:${emp.salary.toFixed(2)}元
`);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。