国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6:let const

A Loity / 926人閱讀

摘要:聲明變量存在的問題變量提升引起的問題在的預(yù)編譯階段,引擎會(huì)將上面的函數(shù)修改如下因此,引入了塊級(jí)作用域,強(qiáng)化對(duì)變量生命周期的控制,塊級(jí)作用域聲明在指定塊作用域內(nèi)的變量不能被該作用域之外來訪問用法與相同,但可以把變量的作用域限制在當(dāng)前代碼塊,變

es5 聲明變量
var variable = value;
存在的問題: 變量提升引起的問題
function get(condition) {
    if(condition) {
        var value = "test";
        return value;
    }else {
        return null;
    }
}

在JS的預(yù)編譯階段,JS引擎會(huì)將上面的函數(shù)修改如下:

function get(condition) {
    var value;
    if(condition) {
        value = "test";
        return value;
    }else {
        return null;
    }
}

因此,ES6引入了塊級(jí)作用域,強(qiáng)化對(duì)變量生命周期的控制,塊級(jí)作用域:聲明在指定塊作用域內(nèi)的變量不能被該作用域之外來訪問

let

用法與 var 相同,但可以把變量的作用域限制在當(dāng)前代碼塊,變量聲明不會(huì)被提升

function get(condition) {
    if(condition) {
        
    }else {
        return null;
    }
}

同一作用域內(nèi)不能用 let 重復(fù)定義變量

var name = "test";
let name = "test";
// Uncaught SyntaxError: Identifier "name" has already been declared
const

聲明常量,值不可更改(如定義的是對(duì)象,則可以修改對(duì)象的值),聲明的變量必須初始化;與 let 一樣,不存在變量提升并且同一作用域內(nèi)不能用 const 重復(fù)定義變量

const name = "test";  // 正確定義并初始化

const obj = {count: 1};
obj.count = 2;

const name;
// Uncaught SyntaxError: Missing initializer in const declaration
var name = "test";
const name = "test";
// Uncaught SyntaxError: Identifier "name" has already been declared
const name = "test1";
name = "test2";
// Uncaught TypeError: Assignment to constant variable.
臨時(shí)死區(qū)(TDZ)

因?yàn)?let 與 const 不存在變量提升,如果在聲明變量之前使用這些變量則會(huì)觸發(fā)引用錯(cuò)誤;只有在變量聲明之后,變量才會(huì)從TDZ中移出,即可正常訪問。

typeof value;
let value = "test";
// VM2053:1 Uncaught ReferenceError: value is not defined

原文鏈接:https://arronf2e.github.io/post/es6-let-const

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/109510.html

相關(guān)文章

  • ES6學(xué)習(xí) 第一章 letconst 命令

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

    番茄西紅柿 評(píng)論0 收藏2637
  • 新手快速學(xué)習(xí)ES6語法,用最快的速度入門ES6就看這里

    摘要:的作用域與命令相同只在聲明所在的塊級(jí)作用域內(nèi)有效。數(shù)值和布爾值的解構(gòu)賦值解構(gòu)賦值時(shí),如果等號(hào)右邊是數(shù)值和布爾值,則會(huì)先轉(zhuǎn)為對(duì)象。上面代碼中,數(shù)值和布爾值的包裝對(duì)象都有屬性,因此變量都能取到值。默認(rèn)值解構(gòu)賦值允許指定默認(rèn)值。 最近正在學(xué)習(xí)ES6,對(duì)于ES6的語法有一些自己的理解, 想寫這篇文章幫助跟我一樣的新手快速入門ES6而不至于連代碼都看不懂. 至于開發(fā)環(huán)境的搭建什么...

    vspiders 評(píng)論0 收藏0
  • ES6基礎(chǔ)

    一、塊級(jí)作用域 1. var 首先看看ES5中得變量聲明方式 if (true) { var a = 2 } console.log(a) // 2 以上代碼等同于 var a if (true) { a = 2 } console.log(a) 以上可知 : 在塊內(nèi)部定義變量 變量提升,到函數(shù)最頂部 通過var聲明的變量,無論在何處聲明,均為全局作用域 2.let 和 ...

    BigTomato 評(píng)論0 收藏0
  • 學(xué)習(xí)ES6筆記──工作中常用到的ES6語法

    摘要:但是有了尾調(diào)用優(yōu)化之后,遞歸函數(shù)的性能有了提升。常被用來檢查對(duì)象中是否存在某個(gè)鍵名,集合常被用來獲取已存的信息。循環(huán)解構(gòu)對(duì)象本身不支持迭代,但是我們可以自己添加一個(gè)生成器,返回一個(gè),的迭代器,然后使用循環(huán)解構(gòu)和。 一、let和const 在JavaScript中咱們以前主要用關(guān)鍵var來定義變量,ES6之后,新增了定義變量的兩個(gè)關(guān)鍵字,分別是let和const。對(duì)于變量來說,在ES5中...

    curried 評(píng)論0 收藏0
  • ES6學(xué)習(xí)摘要(01)(新人學(xué)習(xí))

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

    dmlllll 評(píng)論0 收藏0
  • es6學(xué)習(xí)之letconst命令

    摘要:和命令命令是在它所在的代碼塊有效,它屬于塊級(jí)作用域,新增。只有全局作用域和函數(shù)作用域。 let和const命令 let命令是在它所在的代碼塊有效,它屬于塊級(jí)作用域,es6新增。es5只有全局作用域和函數(shù)作用域。let命令存在暫時(shí)性死區(qū)(TDZ),即在申明前使用就會(huì)報(bào)錯(cuò),不存在變量提升 console.log(a); // 報(bào)錯(cuò) let a = 111; ==let不允許在相同作用域中,...

    DrizzleX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<