真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JS中var、let和const是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了JS中var、let和const是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、淶水網(wǎng)站維護(hù)、網(wǎng)站推廣。

var

var 語句用來在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:

  • 作用域范圍是函數(shù)作用域或全局作用域的。
  • 不受暫存死區(qū)(TDZ)的限制。
  • 它會(huì)在 window 上以相同的名稱創(chuàng)建一個(gè)全局屬性。
  • 可分配的。
  • 可聲明的。

函數(shù)作用域和全局作用域

當(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

let 語句在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:

  • 屬于塊作用域。
  • 受到暫存死區(qū)的約束。
  • 它不會(huì)在 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"

暫存死區(qū)

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

const 語句用來在 JavaScript 中聲明一個(gè)變量,該變量遵守以下規(guī)則:

  • 是屬于塊作用域的。
  • 受到“暫存死區(qū)”的約束。
  • 它不會(huì)在 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"

暫存死區(qū)

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'

總結(jié)


塊作用域暫存死區(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)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!


分享題目:JS中var、let和const是什么-創(chuàng)新互聯(lián)
本文地址:http://weahome.cn/article/csgdhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部