
*我想了想這個(gè)系列我打算分上下兩集來講,避免因?yàn)樘L看起來太累,盡量做到簡短又能讓大家通熟易懂,這是我的初心,有什么好建議希望大家提出
1、let聲明
一直以來 JavaScript 都是通過 var 關(guān)鍵字定義變量,let和const 是ES6新增兩個(gè)變量聲明方式
(1).現(xiàn)在我們使用var聲明變量看看會(huì)發(fā)生什么?
代碼一:
var a = 124
var a = 234;
console.log(a);//輸出234
結(jié)論:var多次聲明一個(gè)變量并不會(huì)報(bào)錯(cuò),后面一個(gè)變量,會(huì)覆蓋前面聲明的變量
代碼二:
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);//連續(xù)輸出5
? ? })
}
結(jié)論:用var聲明的變量i,每一次循環(huán),新的i值都會(huì)覆蓋舊值,所以連續(xù)輸出5
代碼三:
console.log(a);//輸出123
var a = 123 ;
結(jié)論:用var聲明的變量,可以先使用后聲明,但在嚴(yán)格模式下 會(huì)報(bào)錯(cuò) undefined
代碼四:
(function () {
if (true) {
var a = 100; //在if塊內(nèi)部聲明的變量a,在塊外面是可以使用的
console.log(a); //輸出100
}
console.log(a); //輸出100
})();
結(jié)論:用var定義的變量作用域在函數(shù)中都有效,不存在塊級(jí)作用域
(2).現(xiàn)在我們用let變量聲明看看會(huì)發(fā)生什么?
代碼一:
let a = 124
let a = 234;
console.log(a);//編譯器無法編譯,直接報(bào)錯(cuò)
結(jié)論:let多次聲明一個(gè)變量編譯不會(huì)通過,直接報(bào)錯(cuò)
代碼二:
for (let i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);//會(huì)逐漸輸出0-4
? ?})
}
結(jié)論:用let聲明的變量i,在每次循環(huán)都會(huì)分配獨(dú)立的變量,所以不會(huì)被覆蓋
代碼三:
console.log(a);//報(bào)錯(cuò)
var a = 123 ;
結(jié)論:編譯不通過,let聲明的變量不存在變量提升,一定聲明后才能使用;
代碼四:
(function () {
if (true) {
let a = 100;
console.log(a); //輸出100
}
console.log(a); //Uncaught ReferenceError: a is not defined
})();
結(jié)論:用let聲明的變量有塊級(jí)作用域,當(dāng)在if外面打印a時(shí)會(huì)報(bào)引入錯(cuò)誤,a沒有定義
2、const聲明
const也是聲明變量的一種方式,一般用于聲明一個(gè)常量,被賦值后不能夠改變const 與 let 不同點(diǎn)在于:
(1). const 如果聲明的變量如果是簡單的值,則不能改變變量的值,修改會(huì)報(bào)錯(cuò)
const A=123;
A =234;
console.log(A);//報(bào)錯(cuò)
(2). const 如果聲明的是復(fù)合類型的變量,則只保證變量地址不變,值可以變
const obj = {a: 123};
obj.a = 234;
console.log(obj.a); // 輸出:234
foo = {a: 1111}; // 報(bào)錯(cuò)
個(gè)人學(xué)習(xí)心得,大神路過 ,不喜勿噴?? ,如果你覺得不錯(cuò),歡迎點(diǎn)贊,訂閱,分享出去給需要的人,筆者將非常感謝
<完>
如果你是喜歡看書的朋友,不妨點(diǎn)擊【有驚喜】這是我在亞馬遜買的電子書,都非常珍貴。希望你能喜歡
作者:小處成就大事
簡介:一個(gè)喜歡分享和學(xué)習(xí)的前端開發(fā)程序猿,平時(shí)喜歡看看書,游泳,爬山,戶外騎行等,期待與志同道合的你成為朋友,一起交流、一起進(jìn)步。
初衷:閑時(shí)喜歡寫一些文章分享,記錄豐富自己??赡軟]有別人寫得好,但是我寫的每一篇都非常用心和投入。真心希望來到這里對(duì)你有所收獲,我將非常開心很欣慰。
博客:小處成就大事_新浪博客
如果有志同道合的朋友不妨加微信一起交流和學(xué)習(xí),期待你的到來
