這篇文章主要介紹了JS中var、let和const是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司專注于洛南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供洛南營(yíng)銷型網(wǎng)站建設(shè),洛南網(wǎng)站制作、洛南網(wǎng)頁設(shè)計(jì)、洛南網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造洛南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供洛南網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
var
語句用來在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:
window
上以相同的名稱創(chuàng)建一個(gè)全局屬性。當(dāng)出現(xiàn)在全局作用域內(nèi)時(shí),var
創(chuàng)建一個(gè)全局變量。另外它還會(huì)在 window
上創(chuàng)建一個(gè)具有相同名稱的 全局屬性:
var city = "Florence"; console.log(window.city); // "Florence"
當(dāng)在函數(shù)內(nèi)部聲明時(shí),變量的作用域?yàn)樵摵瘮?shù):
var city = "Florence"; function bubble() { var city = "Siena"; console.log(city); } bubble(); // "Siena" console.log(city); // "Florence"
var
聲明會(huì)被提升:
function bubble() { city = "Siena"; console.log(city); var city; // hoists } bubble(); // "Siena"
在沒有任何聲明的情況下所分配的變量(無論是 var
,let
還是 const
)在默認(rèn)情況下會(huì)成為全局變量:
function bubble() { city = "Siena"; console.log(window.city); } bubble(); // "Siena"
為了消除這種行為,需要使用嚴(yán)格模式:
"use strict"; function bubble() { city = "Siena"; console.log(window.city); } bubble(); // ReferenceError: assignment to undeclared variable city
任何用 var
聲明的變量都可以在以后進(jìn)行重新分配或重新聲明。重新聲明的例子:
function bubble() { var city = "Florence"; var city = "Siena"; console.log(city); } bubble(); // "Siena"
重新分配的例子:
function bubble() { var city = "Siena"; city = "Florence"; console.log(city); } bubble(); // "Florence"
let
語句在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:
window
上創(chuàng)建任何全局屬性。用 let
聲明的變量不會(huì)在 window
上創(chuàng)建任何全局屬性:
let city = "Florence"; console.log(window.city); // undefined
當(dāng)在函數(shù)內(nèi)部聲明時(shí),變量的作用域?yàn)樵摵瘮?shù):
let city = "Florence"; function bubble() { let city = "Siena"; console.log(city); } bubble(); // "Siena" console.log(city); // "Florence"
當(dāng)在塊中聲明時(shí),變量的作用域?yàn)樵搲K。以下是在塊中使用的例子:
let city = "Florence"; { let city = "Siena"; console.log(city); // "Siena"; } console.log(city); // "Florence"
一個(gè)帶有 if
塊的例子:
let city = "Florence"; if (true) { let city = "Siena"; console.log(city); // "Siena"; } console.log(city); // "Florence"
相反,var
并不受到塊的限制:
var city = "Florence"; { var city = "Siena"; console.log(city); // "Siena"; } console.log(window.city); // "Siena"
let
聲明可能會(huì)被提升,但是會(huì)產(chǎn)生暫存死區(qū):
function bubble() { city = "Siena"; console.log(city); // TDZ let city; } bubble(); // ReferenceError: can't access lexical declaration 'city' before initialization
暫存死區(qū)可防止在初始化之前訪問 let
聲明。另外一個(gè)例子:
function bubble() { console.log(city); // TDZ let city = "Siena"; } bubble(); // ReferenceError: can't access lexical declaration 'city' before initialization
可以看到兩個(gè)例子中產(chǎn)生的異常都是一樣的:證明了“暫存死區(qū)”的出現(xiàn)。
任何用 let
聲明的變量都不能重新聲明。重新聲明引發(fā)異常的例子:
function bubble() { let city = "Siena"; let city = "Florence"; console.log(city); } bubble(); // SyntaxError: redeclaration of let city
這是一個(gè)有效的重新分配的例子:
function bubble() { let city = "Siena"; city = "Florence"; console.log(city); } bubble(); // "Florence"
const
語句用來在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:
window
上創(chuàng)建任何全局屬性。用 const 聲明的變量不會(huì)在 window
上創(chuàng)建任何全局屬性:
const city = "Florence"; console.log(window.city); // undefined
當(dāng)在函數(shù)內(nèi)部聲明時(shí),變量的作用域?yàn)樵摵瘮?shù):
const city = "Florence"; function bubble() { const city = "Siena"; console.log(city); } bubble(); // "Siena" console.log(city); // "Florence"
當(dāng)在塊中聲明時(shí),變量的作用域?yàn)樵搲K。塊語句 {}
的例子:
const city = "Florence"; { const city = "Siena"; console.log(city); // "Siena"; } console.log(city); // "Florence"
在 if
塊中的例子:
const city = "Florence"; if (true) { const city = "Siena"; console.log(city); // "Siena"; } console.log(city); // "Florence"
const
聲明可能會(huì)被提升,但是會(huì)進(jìn)入暫存死區(qū):
function bubble() { console.log(city); const city = "Siena"; } bubble(); // ReferenceError: can't access lexical declaration 'city' before initialization
用 const
聲明的任何變量都不能重新聲明,也不能重新分配。 一個(gè)在重新聲明時(shí)拋出異常的例子:
function bubble() { const city = "Siena"; const city = "Florence"; console.log(city); } bubble(); // SyntaxError: redeclaration of const city
重新分配的例子示例:
function bubble() { const city = "Siena"; city = "Florence"; console.log(city); } bubble(); // TypeError: invalid assignment to const 'city'
塊作用域 | 暫存死區(qū) | 創(chuàng)建全局屬性 | 可重新分配 | 可重新聲明 | |
---|---|---|---|---|---|
var | ? | ? | ? | ? | ? |
let | ? | ? | ? | ? | ? |
const | ? | ? | ? | ? | ? |
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享JS中var、let和const是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!
網(wǎng)頁題目:JS中var、let和const是什么
標(biāo)題網(wǎng)址:http://aaarwkj.com/article6/ipdeog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作、服務(wù)器托管、網(wǎng)站排名、定制開發(fā)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)