var let const三者的區別

2021-08-28 19:49:27 字數 1628 閱讀 9689

首先三者都是用來宣告變數的

作用範圍:var沒有塊級作用域,在任何位置定義的變數在外層都可以訪問到

作用域:

全域性作用域:在最外層定義的變數

區域性作用域:在{}中定義的變數

特點:首先如果在函式內部,就優先在函式內部查詢變數,如果沒有就繼續向外層查詢

var定義的變數可以提公升

console.log(a)          // 變數會提公升,只是宣告但是沒有定義

var a = 123

變成這樣

var a     // 變數提公升

console.log(a) // 輸出undefined

a = 123

let宣告的變數只是在它所在的**塊中有效
for (let i = 0;i<10;i++)

console.log(i) // i is not defind

因為是let宣告的變數,只是在塊級作用域中有效,外部無法訪問,所以會報錯

不可以重複宣告定義

function a () 

a()

這裡會報錯:identifier 'a' has already been declared

不存在變數的提公升

console.log(aa)   // undefined

var aa = 123

console.log(foo) // 報錯

let foo = 'abc'

塊級作用域
function foo () 

console.log(a)

}foo() // 輸出123

定義常量,一旦定義不可修改
const a = 123

a = 235

console.log(a) // 報錯 identifier 'a' has already been declared

塊級作用域
if (true) 

console.log(foo) // 報錯 a is not defind

不可重複宣告
const foo = 123

const foo = 234

console.log(foo) // 報錯 identifier 'foo' has already been declared

不存在變數提公升
console.log(a)  // foo is not defined

const a = 123

引用型別不可直接修改值(賦值),但是可以新增屬性
const arr = 

arr.push(1)

console.log(arr) [1]

----------------------------

const arr =

arr = [2]

console.log(arr) // 報錯 identifier 'arr' has already been declared

var let const三者的區別

1.let不存在變數提公升 使用let宣告的變數,不會像使用var那樣存在 變數提公升 的現象。所以使用let宣告變數,必須遵循 先宣告,後使用 的原則。否則會報錯 console.log a referenceerror 在申明之前 a報錯 let a 10 如果是var宣告的變數,則不會報錯。c...

var let const三者的區別

本文參考,csdn 菜鳥教程 老生常談的問題了 也看了網上各種解析,自己理解了一下 在了解 var let const三者的區別 之前,我們需要明白乙個東西 作用域 作用域分為全域性作用域,函式作用域。當然,這是es5的說法 es6新增了塊級作用域,塊作用域由 包括,if語句和 for語句裡面的也屬...

var, let, const三者之間的區別

一 作用域 js中有全域性作用域和區域性作用域兩種,var和let 相同點 都是用來宣告變數 不同點 1 var 是全域性宣告。let是區域性宣告,只在宣告的塊中有效 塊級作用域 console.log a 1 console.log b b is not defined 2 var宣告存在變數提公...