亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

ES6 -- let和const

whidy / 2918人閱讀

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

LET和const命令

var

變量聲明提升原則

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

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

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

函數(shù)執(zhí)行時,函數(shù)內部的變量才會聲明,并且只聲明一次,不會重復聲明,執(zhí)行完成后銷毀,函數(shù)內調用時為調用其引用

let

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

和var不同,重復定義會報錯typeError 如果在子域內重復聲明,是可以的。

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

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

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

用 var 或 let 聲明的未賦初值的變量,值會被設定為 undefined

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

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

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

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

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/79430.html

相關文章

  • ES6學習 第一章 let const 命令

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

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

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

    vspiders 評論0 收藏0
  • es6學習之letconst命令

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

    DrizzleX 評論0 收藏0
  • ES6學習摘要(01)(新人學習)

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

    dmlllll 評論0 收藏0
  • 學習ES6筆記──工作中常用到的ES6語法

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

    curried 評論0 收藏0
  • ES6基礎

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

    BigTomato 評論0 收藏0

發(fā)表評論

0條評論

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