es6语法

Posted 笨笨侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6语法相关的知识,希望对你有一定的参考价值。

一、 let

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

<script>
    {
        var a = 10;
        var a = 20;
    }
    console.log(a);   // 20

    {
        let b = 10;
        console.log(b)   // 10
    }
    console.log(b)   // Uncaught ReferenceError: b is not defined
</script>

上面代码在代码块之中,分别用letvar声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效

var a = [];
for(var i = 0; i < 10; i++){
    a[i] = function () {
         console.log(i);
    };
}
a[5]()    // 10

// ******************************
var b = []; for(let i = 0; i < 10; i++){ b[i] = function () { console.log(i); }; } b[5]() // 5

2、不允许重复声明

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

function func() {
     let a = 10;
     var a = 1;
     return a;
}
console.log(func());  // Uncaught SyntaxError: Identifier ‘a‘ has already been declared


// ******************************
function func() { let a = 10; let a = 1; return a; } console.log(func()); // Uncaught SyntaxError: Identifier ‘a‘ has already been declared
技术分享图片
function func(arg) {
  let arg; // 报错
}

function func(arg) {
  {
    let arg; // 不报错
  }
}
不能在函数内部重新声明参数

 

3、为什么需要块级作用域

3.1、内层变量可能会覆盖外层变量

var a = 10;
function func(){
    console.log(a)
    var a = 5;
}
func()   //undefined

上面代码原因在于变量提升,导致内层的a变量覆盖了外层的a变量。

3.2、用来计数的循环变量泄露为全局变量

var s = ‘hello‘;

for (var i = 0; i < s.length; i++) {
  console.log(s[i]);
}

console.log(i);  // 5

上面代码中,变量i只用来控制循环,但是循环结束后,它并没有消失,泄露成了全局变量。

二、const

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const PI = 3.1415926;
PI   // 3.1415926

PI = 3;  // TypeError: Assignment to constant variable.

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值

const foo;
// SyntaxError: Missing initializer in const declaration

// 对于const来说,只声明不赋值,就会报错

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

if (true) {
  const MAX = 5;
}

MAX // Uncaught ReferenceError: MAX is not defined

 







以上是关于es6语法的主要内容,如果未能解决你的问题,请参考以下文章

ES6解构

React使用ES6语法重构组件代码

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误

总结常见的ES6新语法特性

es6的一些基本语法

30秒就能看懂的JavaScript 代码片段