成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6學(xué)習(xí)筆記一:let、const、塊級作用域

YuboonaZhang / 2529人閱讀

摘要:一新增了命令和一樣都是用來聲明標量,但所聲明的變量只在聲明的代碼塊內(nèi)及聲明之后有效命令適合在循環(huán)中使用在循環(huán)內(nèi)有效在全局內(nèi)有效命令暫時性死區(qū)大括號中的使用了聲明,所以在大括號中暫時只能在聲明之后有效不允許在同一作用域內(nèi)重復(fù)聲明變量,因此不能

一、ES6新增了let命令

let 和 var 一樣都是用來聲明標量,但let所聲明的變量只在【聲明的代碼塊內(nèi)】及【聲明之后】有效

{
    console.log(a);  // undefined
    console.log(b);  // Uncaught ReferenceError: b is not defined(…)
    var a = 5;
    let b = 10;
}
console.log(a);  // 5
console.log(b);  // Uncaught ReferenceError: b is not defined(…)

let命令適合在for循環(huán)中使用

// i在for循環(huán)內(nèi)有效
for(let i = 0;i < 5;i++){
    console.log(i); // 0 1 2 3 4
}
console.log(i);    // Uncaught ReferenceError: i is not defined(…)

//i在全局內(nèi)有效
for(var i = 0;i < 5;i++){
    console.log(i); // 0 1 2 3 4
}
console.log(i);    // 5

let 命令暫時性死區(qū)

// 大括號中的a使用了let聲明,所以 a在大括號中暫時只能在聲明之后有效
var a = 5;
{
    console.log(a); // Uncaught ReferenceError: a is not defined(…)
    typeof a;       // Uncaught ReferenceError: a is not defined(…)
    let a =10;      
    console.log(a); // 10
}
console.log(a);     // 5

let不允許在同一作用域內(nèi)重復(fù)聲明變量,因此不能在函數(shù)內(nèi)重新聲明變量

{
    let a = 10;
    var a = 15;  //Uncaught SyntaxError: Identifier "a" has already been declared
}

{
    var a = 10;
    var a = 15;        // 不會報錯
    console.log(a);    // 15
}

show(10);  
function show(arg){
    let arg = 5;    //Uncaught SyntaxError: Identifier "arg" has already been declared(…)
    console.log(arg);
}

hide(10);
function hide(arg){
    {
        let arg = 5;
        console.log(arg);  // 5
    }
    console.log(arg);      // 10
}

二、ES6新增了塊級作用域

ES5只有全局作用域和函數(shù)作用域,會出現(xiàn)以下的問題

//1、內(nèi)層變量覆蓋了外層變量
var number = 5;
show();
function show(){
    console.log(number);      // undefined
    var number = 10 ;
}

//2、i泄露成全局變量
var string = "hello";
for(var i = 0 ;i

ES6塊級作用域?qū)懛ǎ▔K級作用域可以無限嵌套,可以代替ES5的匿名函數(shù)IIFE)

{
    let number = 5;
    console.log(number);       // 5
    {
        let number = "hello";
        console.log(number);  // hello
    }
}

ES5嚴格模式下,函數(shù)不能在塊級中聲明,ES6明確規(guī)定可以在塊級作用域中聲明函數(shù),但聲明的函數(shù)有點類似let,在塊級作用域之外不可引用,由于瀏覽器可以忽略以上規(guī)則,所以盡量避免在塊級作用域中聲明函數(shù)。

//ES5非嚴格模式
if(true){
    function show(){    //不報錯
    };
}
//ES5嚴格模式
"use strict";
if(true){
    function show(){    //直接報錯
    };
}

//ES6嚴格模式
"use strict";
if(true){
    function show(){    //不報錯
    };
}

三、ES6新增了const命令

const 聲明的是一個只讀的變量,一旦聲明,不可更改,這就意味著一旦聲明就必須初始化,不然會報錯,const作用域和let作用域一樣.

const PI;             //Uncaught SyntaxError: Missing initializer in const declaration
const PI = 3.1415926;
console.log(PI);      // 3.1415926;
PI = 4 ;              // Uncaught TypeError: Assignment to constant variable.

//const聲明的變量也和let一樣,不能重復(fù)聲明
var a = 1;
let b = 2;
const a = 5;    //Uncaught SyntaxError: Identifier "a" has already been declared
const b = 6 ;   //Uncaught SyntaxError: Identifier "b" has already been declared

//對于復(fù)合對象,變量名指向的是數(shù)據(jù)的地址,const聲明的指向的是數(shù)據(jù)的地址不變,但數(shù)據(jù)可以變;若要凍結(jié)數(shù)據(jù),可以使用freeze.
const A = {};
A.props = 123;
console.log(A.props);  // 123
A = {};                // Uncaught TypeError: Assignment to constant variable.

const B = Object.freeze({});
B.props = 456;         // 常規(guī)模式,該行代碼無效,嚴格模式下會報錯
console.log(B.props);  // undefined

全局變量的屬性

window.a = 1;
var a = 2 ;
console.log(a);         // 2
console.log(window.a);  // 2

window.b = 1;
let b = 2 ;
console.log(b);         // 2
console.log(window.b);  // 1

總結(jié):

ES5 有兩種聲明變量的方法:var 和 function命令
ES6 有六種聲明變量的方法:var 、 function 、let 、const 、import、class命令。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80810.html

相關(guān)文章

  • ES6學(xué)習(xí)筆記--塊級綁定

    摘要:對比常量聲明與聲明常量聲明與聲明,都是塊級聲明。最后一點全局塊級綁定與不同于的另一個方面是在全局作用域上的表現(xiàn)。塊級綁定新的最佳實踐在的發(fā)展階段,被廣泛認可的變量聲明方式是默認情況下應(yīng)當(dāng)使用而不是。總結(jié)與塊級綁定將詞法作用域引入。 var變量與變量提升 使用var關(guān)鍵字聲明的變量,無論其實際聲明位置在何處,都會被視為聲明于所在函數(shù)的頂部(如果聲明不在任意函數(shù)內(nèi),則被視為在全局作用域的頂...

    wangshijun 評論0 收藏0
  • es6學(xué)習(xí)筆記-let,const塊級作用_v1.0_byKL

    摘要:考慮到環(huán)境導(dǎo)致的行為差異太大,應(yīng)該避免在塊級作用域內(nèi)聲明函數(shù)。函數(shù)聲明語句函數(shù)表達式循環(huán)循環(huán)還有一個特別之處,就是循環(huán)語句部分是一個父作用域,而循環(huán)體內(nèi)部是一個單獨的子作用域。聲明一個只讀的常量。 es6學(xué)習(xí)筆記-let,const和塊級作用域_v1.0 塊級作用域 javascript 原來是沒有塊級作用域的,只有全局作用域和函數(shù)作用域 例子1 因為沒有塊級作用域,所以每次的i都是一...

    Youngdze 評論0 收藏0
  • ES6學(xué)習(xí)letconst 命令

    摘要:外層作用域不報錯正常輸出塊級作用域與函數(shù)聲明規(guī)定,函數(shù)只能在頂層作用域和函數(shù)作用域之中聲明,不能在塊級作用域聲明。規(guī)定,塊級作用域之中,函數(shù)聲明語句的行為類似于,在塊級作用域之外不可引用。同時,函數(shù)聲明還會提升到所在的塊級作用域的頭部。 前言:最近開始看阮一峰老師的《ECMAScript 6 入門》(以下簡稱原...

    番茄西紅柿 評論0 收藏2637
  • ES6學(xué)習(xí)摘要(01)(新人學(xué)習(xí)

    摘要:入門一前言由于最近本人在學(xué)習(xí),做一些筆記能夠更好的熟悉,就趁此機會來寫一篇關(guān)于的新人學(xué)習(xí)摘要吧。的作用域與命令相同只在聲明所在的塊級作用域內(nèi)有效。塊級作用域新增方式和實際上為新增了塊級作用域。同時,函數(shù)聲明還會提升到所在的塊級作用域的頭部。 ECMAScript6/ES6 入門 一、前言 由于最近本人在學(xué)習(xí)ES6,做一些筆記能夠更好的熟悉,就趁此機會來寫一篇關(guān)于ES6的新人學(xué)習(xí)摘要吧。...

    dmlllll 評論0 收藏0
  • ES6筆記let && const

    摘要:聲明的變量只在其所在的代碼塊內(nèi)有效。只要在聲明之前使用這些變量,就會報錯。在語法上稱為暫時性死區(qū)有時候,會不經(jīng)間遇到比較隱蔽的死區(qū),不太容易被發(fā)現(xiàn)。不允許重復(fù)聲明不允許在相同的作用域內(nèi)聲明同一個變量。一旦聲明,其值就不能再改變。 let && const let let聲明的變量只在其所在的代碼塊內(nèi)有效。 { let a = 10; } console.log(a) //R...

    aristark 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<