JavaScript三種定義變量區(qū)別


本文參考 網(wǎng)站


三種定義變量的方法分別是var、let、const

1.var定義變量

語(yǔ)法及說(shuō)明

var定義的變量可以修改,如果不初始化會(huì)輸出undefined,不會(huì)報(bào)錯(cuò)。

var a = 1;
// var a;   不會(huì)報(bào)錯(cuò)
console.log('函數(shù)外var定義a:' + a);//可以輸出a=1
function change(){
a = 4;
console.log('函數(shù)內(nèi)var定義a:' + a);//可以輸出a=4
} 
change();
console.log('函數(shù)調(diào)用后var定義a為函數(shù)內(nèi)部修改值:' + a);//可以輸出a=4
特點(diǎn)

變量聲明提升

無(wú)論在代碼的任何位置聲明變量,執(zhí)行引擎都會(huì)在任何代碼執(zhí)行之前處理。由于這個(gè)原因,所以在代碼中的任意位置聲明變量與在代碼開(kāi)頭聲明變量是等效的

這意味著我們可以在定義變量之前使用,這個(gè)行為叫做'hoisting',也就是把所有的變量聲明移動(dòng)到函數(shù)或者全局代碼的開(kāi)頭位置

聲明與未聲名變量的區(qū)別

未聲明的變量會(huì)被添加一個(gè)全局作用域,而聲明變量作用域是當(dāng)前上下文

也就是說(shuō)在函數(shù)內(nèi)部定義變量時(shí)如果不加var聲明這個(gè)變量是一個(gè)全局變量加上var時(shí)這個(gè)變量是一個(gè)局部變量
例:

function x() {
  y = 1;   
  // 未添加聲明,是全局變量(在嚴(yán)格模式下會(huì)拋出ReferenceError)
  var z = 2;
}
x();
console.log(y); // '1'
console.log(z); // ReferenceError: z is not defined

2.let定義塊級(jí)變量

用于定義塊級(jí)變量語(yǔ)法結(jié)構(gòu)與var類似
如定義一個(gè)if塊級(jí)變量:

if (x > y) {
  let gamma = 12.7 + y;
  i = gamma * x;
}

let與var區(qū)別
let與var的區(qū)別主要體現(xiàn)在作用域上,當(dāng)在子代碼塊中使用中其聲明的是塊級(jí)變量,而var聲明的是全局變量:

var a = 5;   //全局作用域
var b = 10;

if (a === 5) {
  let a = 4; // if 塊級(jí)作用域
  var b = 1; // 函數(shù)級(jí)作用域

  console.log(a);  // 4
  console.log(b);  // 1
} 

console.log(a); // 5
console.log(b); // 1

在函數(shù)或程序頂層使用時(shí),let與var沒(méi)有什么區(qū)別

3. const定義常量

const用于聲明一個(gè)或多個(gè)常量,聲明時(shí)必須進(jìn)行初始化,且初始化后值不可再修改

const b = 2;//正確
 // const b;//錯(cuò)誤,必須初始化 
console.log('函數(shù)外const定義b:' + b);//有輸出值
  b = 5; //無(wú)法更改
  console.log('函數(shù)外修改const定義b:' + b);//無(wú)法輸出 

const定義常量與使用let定義變量十分相似:
1.二者都是塊級(jí)作用域
2.都不能和它所在作用域內(nèi)的其他變量或函數(shù)擁有相同的名稱
兩者還有以下兩點(diǎn)區(qū)別:
1.const聲明的常量必須初始化,而let聲明的變量不用
2.常量的值不能通過(guò)再賦值改變,也不能再次聲明。而變量值可以修改

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容