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

資訊專(zhuān)欄INFORMATION COLUMN

ES6 -- let和const

whidy / 2859人閱讀

摘要:和不同,沒(méi)有變量提升,聲明之前,該變量都是不可用的。聲明創(chuàng)建一個(gè)只讀的常量。這不意味著常量指向的值不可變,而是變量標(biāo)識(shí)符的值只能賦值一次。聲明同時(shí)必須賦值。

LET和const命令

var

變量聲明提升原則

var語(yǔ)句聲明的變量的作用域是當(dāng)前執(zhí)行位置的上下文

給一個(gè)非聲明變量賦值會(huì)隱式創(chuàng)建一個(gè)全局變量(全局object的一個(gè)屬性),注意這里是非聲明賦值

聲明和賦值是兩回事,注意區(qū)分,referenceError和undefined

函數(shù)執(zhí)行時(shí),函數(shù)內(nèi)部的變量才會(huì)聲明,并且只聲明一次,不會(huì)重復(fù)聲明,執(zhí)行完成后銷(xiāo)毀,函數(shù)內(nèi)調(diào)用時(shí)為調(diào)用其引用

let

和var不同,聲明可以是塊級(jí)的,也就是for函數(shù)內(nèi)的n個(gè)函數(shù)塊,let會(huì)聲明n個(gè)變量( 每進(jìn)入一次for花括號(hào)就生成了一個(gè)塊級(jí)域 )

和var不同,重復(fù)定義會(huì)報(bào)錯(cuò)typeError 如果在子域內(nèi)重復(fù)聲明,是可以的。

和var不同,沒(méi)有變量提升, let聲明之前,該變量都是不可用的。稱之為: 暫時(shí)性死區(qū)(temproal dead zone簡(jiǎn)稱 TDZ)

let 塊 提供了一種在塊的范圍內(nèi)獲取變量的值,而不會(huì)影響塊外面名字相同的變量的值的方法

var x = 5;
var y =0;
let(x = x+10, y =12)
 {  //這里隱式創(chuàng)建了一個(gè)包圍 expr 的語(yǔ)句塊。
console.log(x+y);// 27
}
console.log(x + y); // 5

用 var 或 let 聲明的未賦初值的變量,值會(huì)被設(shè)定為 undefined

let和var三大區(qū)別:
- let聲明的變量只在它所在的代碼塊有效,而非var為函數(shù)作用域
- let不會(huì)變量聲明提前,未聲明前使用,直接報(bào)錯(cuò),var不會(huì)報(bào)錯(cuò)undefined
- let回暫時(shí)性死區(qū),一旦區(qū)塊內(nèi)let聲明了a,全局變量a不會(huì)在該區(qū)塊起
- let不允許在相同作用域內(nèi),重復(fù)聲明同一個(gè)變量
為什么引進(jìn)塊級(jí)作用域?
- 防止內(nèi)層變量可能覆蓋外層變量
- for循環(huán)的i變量控制循環(huán),防止泄露
    
塊級(jí)作用域
- 使用{}代替立即執(zhí)行匿名函數(shù)(IIFE)
- ES5的嚴(yán)格模式規(guī)定,函數(shù)只能在頂層作用域和函數(shù)內(nèi)聲明,其他情況(比如if代碼塊、循環(huán)代碼塊)的聲明都會(huì)報(bào)錯(cuò)。
- ES6由于引入了塊級(jí)作用域,這種情況可以理解成函數(shù)在塊級(jí)作用域內(nèi)聲明,因此不報(bào)錯(cuò),但是構(gòu)成區(qū)塊的大括號(hào)不能少,否則還是會(huì)報(bào)錯(cuò)。
const

const 聲明創(chuàng)建一個(gè)只讀的常量。這不意味著常量指向的值不可變,而是變量標(biāo)識(shí)符的值只能賦值一次。聲明同時(shí)必須賦值。

- 聲明一個(gè)只讀的常量。一旦聲明,常量的值就不能改變,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。
- const的作用域與let命令相同:
    只在聲明所在的塊級(jí)作用域內(nèi)有效
    const命令聲明的常量也是不提升
    同樣存在暫時(shí)性死區(qū),只能在聲明的位置后面使用
    同樣不可重復(fù)聲明
- 對(duì)于復(fù)合類(lèi)型的變量(例如對(duì)象、數(shù)組),變量名不指向數(shù)據(jù),而是指向數(shù)據(jù)所在的地址。
    const命令只是保證變量名指向的地址不變,并不保證該地址的數(shù)據(jù)不變,所以將一個(gè)對(duì)象聲明為常量必須非常小心。
    如果真的想將對(duì)象凍結(jié),應(yīng)該使用Object.freeze方法,地址數(shù)據(jù)也不會(huì)變了
    
變量聲明
- ES6:var/function/let/const/import/class
- ES5:var/function
全局對(duì)象的屬性
- var命令和function命令聲明的全局變量,依舊是全局對(duì)象的屬性
- let命令、const命令、class命令聲明的全局變量,不屬于全局對(duì)象的屬性,eg:`let b = 1; window.b 為undefined`

book url:http://es6.ruanyifeng.com/#do...

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

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

相關(guān)文章

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

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

    番茄西紅柿 評(píng)論0 收藏2637
  • 新手快速學(xué)習(xí)ES6語(yǔ)法,用最快的速度入門(mén)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的語(yǔ)法有一些自己的理解, 想寫(xiě)這篇文章幫助跟我一樣的新手快速入門(mén)ES6而不至于連代碼都看不懂. 至于開(kāi)發(fā)環(huán)境的搭建什么...

    vspiders 評(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
  • ES6學(xué)習(xí)摘要(01)(新人學(xué)習(xí))

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

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

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

    curried 評(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ù)最頂部 通過(guò)var聲明的變量,無(wú)論在何處聲明,均為全局作用域 2.let 和 ...

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

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

0條評(píng)論

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