面試官常問之說說js中var、let、const的區(qū)別_第1頁
面試官常問之說說js中var、let、const的區(qū)別_第2頁
面試官常問之說說js中var、let、const的區(qū)別_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第面試官常問之說說js中var、let、const的區(qū)別關(guān)于var、let和const三個(gè)關(guān)鍵字的區(qū)別,是一個(gè)老生常談的問題,也是經(jīng)典的面試題。本篇文章將全面講解三者的特性,以及它們之間的區(qū)別,由淺入深讓你徹底搞懂這個(gè)知識(shí)點(diǎn)。

ECMAScript變量是松散類型的,意思就是變量可以用于保存任何類型的數(shù)據(jù),每個(gè)變量只不過是一個(gè)用于保存任意值的命名占位符。

有3個(gè)關(guān)鍵字可以聲明變量:var、let和const,var在ECMAScript的所有版本中都可以使用,而let和const只能在ES6及更晚的版本中使用。

要定義變量,可以使用var操作符(注意var是一個(gè)關(guān)鍵字),后跟變量名(即標(biāo)識(shí)符,如前所述):

varmessage;

上面這行代碼定義了一個(gè)名為message的變量,它可以保存任何類型的值。不初始化的情況下,變量會(huì)保存一個(gè)特殊值undefined。

ECMAScript實(shí)現(xiàn)變量初始化,因此可以同時(shí)定義變量并設(shè)置它的值:

varmessgae="hi";

message被定義為一個(gè)保存字符串值hi的變量。像這樣初始化變量不會(huì)將它標(biāo)識(shí)為字符串類型,只是一個(gè)簡單的賦值而已。隨后,不僅可以改變保存的值,還可以改變值的類型:

varmessage="hi";

message=666;//合法,但不推薦

console.log(message);//666

如果需要定義多個(gè)變量,可以在一條語句中用逗號(hào)分隔每個(gè)變量(及可選的初始化):

varmessage,

name="孫悟空",

age=18;

使用var操作符定義的變量會(huì)成為包含它的函數(shù)的局部變量。例如,使用var在一個(gè)函數(shù)內(nèi)部定義一個(gè)變量,就意味著該變量將在函數(shù)退出時(shí)被銷毀:

functiontest(){

varmessage="hi";//局部變量

test();

console.log(message);//error:messageisnotdefined

不過,在函數(shù)內(nèi)部定義變量時(shí)省略var操作符,可以創(chuàng)建一個(gè)全局變量:

functiontest(){

message="hi";//全局變量

test();

console.log(message);//ok

雖然可以通過省略var操作符定義全局變量,但不推薦這么做。在嚴(yán)格模式下,如果像這樣給未聲明的變量賦值,會(huì)報(bào)錯(cuò)。

在同一個(gè)作用域內(nèi),反復(fù)多次使用var聲明同一個(gè)變量也是沒問題的:

functiontest(){

varmessage="hi";

varmessage=false;

varmessage=666;

console.log(message);

test();//666

所謂的提升,就是把所有變量聲明都拉到函數(shù)作用域的頂部。注意,只提升聲明,不提升賦值操作。

舉個(gè)栗子:

functiontest(){

console.log(message);

varmessage="hi";

test();//undefined

上面的代碼不會(huì)報(bào)錯(cuò),因?yàn)槭褂胿ar關(guān)鍵字聲明的變量會(huì)提升到函數(shù)作用域的頂部,跟下面的代碼是等價(jià)的:

functiontest(){

varmessage;

console.log(message);

message="hi";

test();//undefined

let和var的作用差不多,但有著非常重要的區(qū)別。

var聲明的范圍是函數(shù)作用域,而let聲明的范圍是塊作用域:

if(true

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論