Skip to content

1.Es6介绍

2.let和const

let/const:

  • 无变量提升
  • 有作用域
  • 不能重复声明

const:不变量

javascript
//变量提升:
console.log(a) // undefined
var a=3

//变量提升的问题1:
var arr=[]
for(var i =0;i<10;i++){
  arr[i]=function(){
    return i
  }
}
console.log(arr[5]) // 10 不是5 因为i++ 到10了

//let不会污染全局变量,var会:
console.log(windows.RegExp) // 返回是个函数
let RegExp = 10
console.log(RegExp) //10

3.模版字符串

javascript
let id = 6
let htmlString = `<div>my id is ${id}</div>`
console.log(htmlString) // my id is 6

4. 函数之默认值、剩余参数

默认值:解决了es5 ,函数传参时默认值的问题

javascript
//Es5写法
  function foo(a, b) {
        a = a || 10  //a默认值为10,b为5
        b = b || 5
        return a + b
    }
    console.log(foo()) //15

//Es6写法
function foo(a = 10, b = 5) {
        return a + b
    }
    console.log(foo()) //15

剩余参数:解决了es5的arguments的问题

javascript
//写个函数pick出对象中想要的属性和值

// Es5写法
var book = {
        'name': 'Happy',
        'author': 'Dahong',
        'year': 2009
    }

    function pick(obj) {
        var result = Object.create(null)
        for (var i = 1; i < arguments.length; i++) {
            result[arguments[i]] = obj[arguments[i]]
        }
        return result
    }

    console.log(pick(book, 'name', 'year')) //{name: 'Happy', year: 2009}

//Es6写法
let book = {
        'name': 'Happy',
        'author': 'Dahong',
        'year': 2009
    }
    
    function pick(obj, ...keys) {
        let result = Object.create(null)
        for (let i = 0; i < keys.length; i++) {
            console.log(keys[i])
            result[keys[i]] = obj[keys[i]]
        }
        return result
    }
    
    console.log(pick(book, 'name', 'year'))   //{name: 'Happy', year: 2009}

5. 函数之扩展运算符、箭头函数