ES6

转载地址 : https://www.jianshu.com/p/287e0bb867ae

1.变量声明let

1.在ES6之前,我们都是用var关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部
(不在函数内即在全局作用域的最顶部)。
这就是函数变量提升例如:

  function aa() {
    if(flag) {
        var test = 'hello man'
    } else {
        console.log(test)
    }
  }

以上的代码实际上是:

 function aa() {
    var test // 变量提升,函数最顶部
    if(flag) {
        test = 'hello man'
    } else {
        //此处访问 test 值为 undefined
        console.log(test)
    }
    //此处访问 test 值为 undefined
  }

所以不用关心flag是否为 true or false。实际上,无论如何 test 都会被创建声明。

接下来ES6主角let登场:let 是块级作用域。
怎么理解这个块级作用域?

在一个函数内部
在一个代码块内部

说白了只要在{}花括号内的代码块即可以认为 let 和 const 的作用域。

看以下代码:

  function aa() {
    if(flag) {
       let test = 'hello man'
    } else {
        //test 在此处访问不到
        console.log(test)
    }
  }

2.模板字符串

用途,基本的字符串格式化。将表达式嵌入字符串中进行拼接。用${}来界定

//ES5 
    var name = 'lux'
    console.log('hello' + name)
//es6
    const name = 'lux'
    console.log(`hello ${name}`) //hello lux

3.箭头函数

箭头函数
ES6很有意思的一部分就是函数的快捷写法。也就是箭头函数。
箭头函数最直观的三个特点。

1.不需要 function 关键字来创建函数
2.继承当前上下文的 this 关键字
3.当你的函数有且仅有一个参数的时候,是可以省略掉括号的。当你函数返回有且仅有一个表达式的时候可以省略{} 和 return;

//例子
	var f = v => v;

// 等同于
	var f = function (v) {
	  return v;
};

4.解构赋值

现阶段对结构赋值的理解:
在等式左边如果不是写的是字符串的形式
而是以数组或者对象的形式,那么即为解构赋值

//正常写法
   var a = 1
//解构数组
   var[a]  =  [1]
//解构对象
   var {log} = console

对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。

	
	let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
	baz // "aaa"
	
	let obj = { first: 'hello', last: 'world' };
	let { first: f, last: l } = obj;
	f // 'hello'
	l // 'world'

中括号中,冒号前面的是同名属性,冒号后面的才是真正的值,要理清楚这一逻辑。
在等式右边,会匹配到与等式左边同名的属性,赋给左边的变量,
无论这个右边的属性值是否被显示列出。

解构赋值对提取JSON对象中的数据,尤其有用。

var jsonData = {
  id: 42,
  status: "OK",
  data: [867, 5309]
};
//普通写法
let id = jsonData.id
let status = jsonDataid.status 
let num  = jsonDataid.num

//ES6 写法
let { id, status, data: number } = jsonData;

console.log(id, status, number);
// 42, "OK", [867, 5309]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值