ES6学习;跟我一起学习常用的es6,适合新人

204 阅读2分钟

在工作中我们或多或少都会用到es6的一些语法,比如let、const、forEach、map、解构赋值等等;那么他们和es5又有什么区别呢?我的感觉是,es6相对于es5的话可以极大的减少代码量,使其开发更加的优雅、简洁、可读性等等;

ES6官网文档文档

let 声明变量

1、 ES6 中的let命令,用来声明变量。它的用法类似于var,但是只会在let命令所在的代码块内有效。

分析: 在以下的这串代码中我们去运行时会发现,他会报错;报错内容是textlet这个变量没有声明;其原因就是上面说到的 let 命令需要在代码块中使用才有效; 所以我们只需要将console.log(textlet)放置在花括号中即可打印出我是let

{
    let textlet = '我是let'
}
console.log(textlet);

报错:报错内容是textlet这个变量没有声明

ReferenceError: textlet is not defined

2、 let不允许在相同作用域内,重复声明同一个变量。

{
      let textlet = '我是let'
      let textlet = '我是第二个let'
      console.log(textlet);
}

报错:标识符 textlet 已经声明

SyntaxError: Identifier 'textlet' has already been declared

分析: 如果我们在全局或者在其他的作用域上声明textlet这边变量是没有问题的;原因是在作用域中不能重复声明一个变量

{
      let textlet = '我是let'
      console.log(textlet);
}
    let textlet = '我是第二个let'
    console.log(textlet);

打印出来的值:

我是let
我是第二个let

3、 其他的方法大家就自己去看看吧!给大家说说一个经典的案例

3-1、 首先我们来看看使用var的情况下使用

    let testlet = document.querySelectorAll('.test-let')
    console.log(testlet);

    for(var i in testlet) {
      testlet[i].onclick = function() {
        testlet[i].style.background = 'red'
      }
    }

报错:未捕获的类型错误:无法设置未定义的属性(设置“背景”)

Uncaught TypeError: Cannot set properties of undefined (setting 'background')
    at testlet.<computed>.onclick

分析: 原因是var是全局变量;他在执行的时候就会将i进行++;然后当你在执行的时候i的值已经是最后一个,然后在执行了++;导致结果找不到这个数组中的参数

这个时候我们将var 转为let即可;如一下代码

    for(let i in testlet) {
      testlet[i].onclick = function() {
        testlet[i].style.background = 'red'
      }
    }

彩蛋:如果你不想用let,就想用 var 的话;只需要将testlet[i]转为this即可;原因自己去查,不做太多的解释

解构赋值

1、 变量解构赋值

    let [a,b] = [1,2]
    console.log(a);
    console.log(b);

结果:

1
2

今天先到这儿了...