ECMAScript 6 入门之 let 命令

刚刚学习es6,也不知道理解的对不对,如果有错误,欢迎指正~

先简单说下,ECMAScriptJavaScript的关系,ECMAScript的历史不知道的自己百度吧。ECMAScriptJavaScript的关系是,前者是后者的规格(标准),后者是前者的一种实现。

基本用法

描述

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

语法

let var1 [= varlue1] [, var2  [= value2]] [, …, varN [= varlueN]];

参数

var1,var2,,varN 为变量名,可以是任意合法的标识符。

value1,value2,,valueN 为变量的初始值。可以是任意合法的表达式。

letvar比较

letvar不同点在于作用域。

var关键词的作用域是最近的函数作用域,在函数体外部就是全局作用域;

let关键词的作用域是最接近的块作用域,在任何块以外就是全局作用域。

1、全局(Global

当在函数体外时,它们是平等的。

let me = 666’; //globally scoped

var you= 250’; //globally scoped

2、函数(Function

当在函数体内使用时,它们是平等的。

function ingWithinEstablishedParameters() {

   let terOfRecommendation = ‘awesome worker!’; //function block scoped

var sityCheerleading = ‘go!’; //function block scoped

};

3、块(Block

下面就是很明显的区别,let只在for循环中,而var却是在整个函数都可见。

function allyIlliterate() {

    //tuce is *not* visible out here

    for( let tuce = 0; tuce < 5; tuce++ ) {

        //tuce is only visible in here (and in the for() parentheses)

        //and there is a separate tuce variable for each iteration of the loop

    }

    //tuce is *not* visible out here

}

function byE40() {

    //nish *is* visible out here

    for( var nish = 0; nish < 5; nish++ ) {

        //nish is visible to the whole function

    }

    //nish *is* visible out here

}

4、重声明(Redeclaration

var允许在同一范围内重新声明相同的变量,let不能。

‘use strict’;

let me = ‘foo’;

let me = ‘bar’; // SyntaxError: Identifier ‘me’ has already been declared

‘use strict’;

var me = ‘foo’;

var me = ‘bar’; // No problem, `me` is replaced.

5、变量提升

var有变量提升功能,let没有。

function func() {

    // val先使用后声明,不报错

    alert(val) // undefined

    var val;

}

function func() {

    // let先使用后声明,报语法错

    alert(val)

    let val;

}



Leave a Comment

You must be logged in to post a comment.