javascript中的const和let是在ECMAScript 6中新增的關鍵字,用來聲明變量。相比于ES5中的var來說,ES6中的const和let更加靈活,更符合現(xiàn)代開發(fā)的要求。本文將詳細介紹const和let的用法和區(qū)別,并結合實例進行說明。
const:聲明常量
const聲明的變量是常量,即一旦聲明的值就不能再被修改。如果嘗試去修改const聲明的值,就會拋出TypeError異常。const聲明的變量必須在聲明時就賦值。
const PI = 3.14; PI = 3.14159; // 拋出TypeError異常
常量的值如果是一個對象,那么對象中的屬性可以被修改,但不能將整個對象賦值為其他值。
const obj = {name: '張三', age: 18}; obj.age = 20; console.log(obj.age); // 輸出20 obj = {name: '李四', age: 21}; // 拋出TypeError異常
let:聲明變量
let也用于聲明變量,但與var的區(qū)別在于,let聲明的變量作用域限定在塊級作用域內,即{}內。
if (true) { let x = 2; } console.log(x); // 輸出ReferenceError異常
由于let聲明的變量作用域是塊級作用域,所以在循環(huán)中使用let聲明的變量可以避免變量提升導致的問題,如下所示:
for (let i = 0; i< 5; i++) { setTimeout(() =>{ console.log(i) // 輸出0,1,2,3,4 }, 100); }
const和let的區(qū)別
const和let的最主要的區(qū)別就是const聲明的變量為常量,let聲明的變量為變量。除此之外,const和let還有以下區(qū)別:
- const聲明的變量必須在聲明時就賦值,let聲明的變量可以在任意時刻賦值。
- const聲明的變量不能被修改,let聲明的變量可以被修改。
- const聲明的變量在聲明時必須賦值,不能留空,let聲明的變量可以留空。
- const聲明的變量在全局作用域和函數(shù)作用域兩種情況下都不會成為全局對象的屬性,而let聲明的變量會成為全局對象的屬性。
總結
const和let是ES6中新增的關鍵字,用來聲明常量和變量。其中const聲明的變量為常量,一旦賦值后不能被修改;而let聲明的變量為變量,可以任意時刻被賦值修改。除此之外,const和let還存在諸多區(qū)別,如常量必須在聲明時就賦值、變量作用域限定在塊級作用域內等。在實際開發(fā)中,我們應該根據(jù)需求靈活使用const和let來聲明變量,從而提高開發(fā)效率和代碼的健壯性。
上一篇php 51cto