let 和const
生活随笔
收集整理的這篇文章主要介紹了
let 和const
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
let 命令
es6新增了let命令,用于聲明變量,與var用法類似,但是使用let聲明變量只在它所在的塊內(nèi)有效,而var則是定義的全局變量 {let a=10;var b=1; } a //a is not defined,外部的a不能訪問到上面塊中定義的a變量 b //1
let不存在變量提升提升
//使用var會(huì)發(fā)生變量提升,當(dāng)腳本開始運(yùn)行使用var命令聲明的變量已經(jīng)存在 console.log(foo); //undefined var foo=2;console.log(foo); //報(bào)錯(cuò)ReferenceError let foo=2; //使用let聲明,聲明的變量一定要在聲明之后使用,否則會(huì)報(bào)錯(cuò)?
let不允許重復(fù)聲明
let不允許在相同作用域內(nèi)重復(fù)聲明同一個(gè)變量
//報(bào)錯(cuò) function(){let a=10;var a=1;//let a=3; }?
const命令
const用于聲明常量,并且該常量那個(gè)是只讀常量,一旦聲明該常量就不能被更改
const a=1; a //1 a=2; //報(bào)錯(cuò)?
并且const只聲明,不賦值也會(huì)報(bào)錯(cuò)。
const a; //報(bào)錯(cuò)?
const變量和let一樣只能在聲明之后使用,并且命令生命的變量也不會(huì)提升,同樣也不可以重復(fù)聲明。
const本質(zhì)
const的常量不能夠更改實(shí)質(zhì)上并不是變量的額值不能更改,而是變量指向的內(nèi)存地址不能變動(dòng)。
塊級(jí)作用域
es5只有全局作用域和函數(shù)作用域,但是沒有塊級(jí)作用域。
沒有塊級(jí)作用域?qū)е碌膯栴}
?
可以看出外部的i會(huì)受到循環(huán)體中i的影響,如果使用let就會(huì)有塊級(jí)作用域,最后就會(huì)顯示,外部i不能找到就會(huì)報(bào)錯(cuò)。es6的塊級(jí)作用域
在塊級(jí)作用域中,外層作用域不能訪問內(nèi)層作用域的變量,,但是內(nèi)層作用域可以定義外層作用域的同名變量。
function example(){let n=5;if(true){let n=10; //內(nèi)層作用域可以和外層作用域聲明同名變量 }console.log(n); //5,外層作用域不會(huì)受到內(nèi)層作用域的影響 }?
塊級(jí)作用域與函數(shù)聲明
在es5中規(guī)定,函數(shù)只能在頂層作用域和函數(shù)作用域之中聲明,不能再塊級(jí)作用域中聲明。
但是es6有所改變:
?
轉(zhuǎn)載于:https://www.cnblogs.com/zzzha/p/9435790.html
總結(jié)
以上是生活随笔為你收集整理的let 和const的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABB 压包指令PackRawByte
- 下一篇: 浅谈工业机器人的运动停止