ES6相关

1.变量声明 let 和const

传统的 var 关键字声明变量,会存在变量提升。在ES6中,我们用 let 和 const 声明,let 声明变量,const 声明常量,let 和 const 都是块级作用域,也就是说在大括号{}内的代码块就是let 和 const 的作用域。

let 作用域在它当前所在的代码块中,不会被提升到当前函数的最顶端。

const 定义的常量不可改变,再次赋值会报错。

一道面试题

var funcs = []
 
for (var i = 0; i < 10; i++) {
  funcs.push(function() {
    console.log(i)
  })
}
funcs.forEach(function(func) {
  func()
})
这样的面试题是大家常见,很多同学一看就知道输出 10 十次,但是如果我们想依次输出0到9呢?两种解决方法。直接上代码。
// ES5告诉我们可以利用闭包解决这个问题
var funcs = []
for (var i = 0; i < 10; i++) {
  funcs.push(
    (function(value) {
      return function() {
         console.log(value)
       }
    })(i)
  )
}
funcs.forEach(function(func) {
  func()
})
 
// 再来看看es6怎么处理的
const funcs = []
for (let i = 0; i < 10; i++) {
  funcs.push(
    function() { console.log(i) }
  )
}
funcs.forEach(func => func())

作者:陈嘻嘻啊
链接:https://www.jianshu.com/p/287e0bb867ae
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 
 
2.数组
 
1.数组去重
一、简单的去重方法
// 最简单数组去重法
/*
* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
* IE8以下不支持数组的indexOf方法
* */
function uniq(array){
    var temp = []; //一个新的临时数组
    for(var i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) == -1){
            temp.push(array[i]);
        }
    }
    return temp;
}

var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5];
console.log(uniq(aa));

二、ES6实现

function unique(arr){
  return Array.from(new Set(arr));      
}
let arr = [1,2,3,3,4,4,5,5,6];
console.log(unique(arr)); // [1,2,3,4,5,6]

set 是ES6新出来的一种定义不重复数组的数据类型

console.log(new Set([1,4,5,2,1,4,4,7]))
// Set(5) {1, 4, 5, 2, 7}

Array.from 是将类数组转化为数组

原文地址:https://www.cnblogs.com/lingnweb/p/8862549.html