微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ES6——let、参数增强、箭头函数和模板字符串

 ECMA  ->  ECMAScript  ->  ES
            标准规范

ES6: js的第6套标准规范



1. let

var

  1. 关键字定义的变量可以在使用后声明,也就是变量可以先使用再声明。
 //var a   		//会将第三行的var a提到最前面,提前声明变量
console.log(a);	//undefined
var a = 1;		//有var才提升
console.log(a);	//1

1.1 let特点

  1. let在全局声明在window中也找不到

  2. 不允许提前使用let变量,也就是变量需要先声明再使用,存在块级作用域。

  3. 同一作用域内不允许重复声明两个同名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}?
`);

在这里插入图片描述

练习:声明变量保存一条员工的数据,格式为对象,包含的属性有编号,姓名,性别(1/0),工资;最后打印出以下格式


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 举报,一经查实,本站将立刻删除。

相关推荐