亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS中var、let和const是什么

發布時間:2020-10-22 13:47:26 來源:億速云 閱讀:201 作者:小新 欄目:web開發

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

var

var 語句用來在 JavaScript 中聲明一個變量,該變量遵守以下規則:

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

函數作用域和全局作用域

當出現在全局作用域內時,var 創建一個全局變量。另外它還會在 window 上創建一個具有相同名稱的 全局屬性

var city = "Florence";

console.log(window.city); // "Florence"

當在函數內部聲明時,變量的作用域為該函數:

var city = "Florence";

function bubble() {
  var city = "Siena";
  console.log(city);
}

bubble(); // "Siena"

console.log(city); // "Florence"

var 聲明會被提升:

function bubble() {
  city = "Siena";
  console.log(city);
  var city; // hoists
}

bubble(); // "Siena"

意外的全局變量

在沒有任何聲明的情況下所分配的變量(無論是 varlet 還是 const)在默認情況下會成為全局變量

function bubble() {
  city = "Siena";
  console.log(window.city);
}

bubble(); // "Siena"

為了消除這種行為,需要使用嚴格模式

"use strict";

function bubble() {
  city = "Siena";
  console.log(window.city);
}

bubble(); // ReferenceError: assignment to undeclared variable city

可重新分配和重新聲明

任何用 var 聲明的變量都可以在以后進行重新分配重新聲明。重新聲明的例子:

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 中聲明一個變量,該變量遵守以下規則:

  • 屬于塊作用域。
  • 受到暫存死區的約束。
  • 它不會在 window 上創建任何全局屬性。
  • 可分配的
  • 不可重新聲明

塊作用域

let 聲明的變量不會在 window 上創建任何全局屬性:

let city = "Florence";

console.log(window.city); // undefined

當在函數內部聲明時,變量的作用域為該函數:

let city = "Florence";

function bubble() {
  let city = "Siena";
  console.log(city);
}

bubble(); // "Siena"

console.log(city); // "Florence"

當在中聲明時,變量的作用域為該塊。以下是在塊中使用的例子:

let city = "Florence";

{
  let city = "Siena";
  console.log(city); // "Siena";
}

console.log(city); // "Florence"

一個帶有 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 聲明可能會被提升,但是會產生暫存死區

function bubble() {
  city = "Siena";
  console.log(city); // TDZ
  let city;
}

bubble();

// ReferenceError: can't access lexical declaration 'city' before initialization

暫存死區可防止在初始化之前訪問 let 聲明。另外一個例子:

function bubble() {
  console.log(city); // TDZ
  let city = "Siena";
}

bubble();

// ReferenceError: can't access lexical declaration 'city' before initialization

可以看到兩個例子中產生的異常都是一樣的:證明了“暫存死區”的出現。

可重新分配,不可重新聲明

任何用 let 聲明的變量都不能重新聲明。重新聲明引發異常的例子:

function bubble() {
  let city = "Siena";
  let city = "Florence";
  console.log(city);
}

bubble(); // SyntaxError: redeclaration of let city

這是一個有效的重新分配的例子:

function bubble() {
  let city = "Siena";
  city = "Florence";
  console.log(city);
}

bubble(); // "Florence"

const

const 語句用來在 JavaScript 中聲明一個變量,該變量遵守以下規則:

  • 是屬于塊作用域的。
  • 受到“暫存死區”的約束。
  • 它不會在 window 上創建任何全局屬性。
  • 不可重新分配
  • 不可重新聲明

塊作用域

用 const 聲明的變量不會在 window 上創建任何全局屬性:

const city = "Florence";

console.log(window.city); // undefined

當在函數內部聲明時,變量的作用域為該函數:

const city = "Florence";

function bubble() {
  const city = "Siena";
  console.log(city);
}

bubble(); // "Siena"

console.log(city); // "Florence"

當在中聲明時,變量的作用域為該塊。塊語句 {} 的例子:

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 聲明可能會被提升,但是會進入暫存死區

function bubble() {
  console.log(city);
  const city = "Siena";
}

bubble();

// ReferenceError: can't access lexical declaration 'city' before initialization

不可重新分配,不可重新聲明

const 聲明的任何變量都不能重新聲明,也不能重新分配。 一個在重新聲明時拋出異常的例子:

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'

總結


塊作用域暫存死區創建全局屬性可重新分配可重新聲明
var?????
let?????
const?????

感謝你能夠認真閱讀完這篇文章,希望小編分享JS中var、let和const是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杂多县| 镇江市| 如东县| 庄河市| 仙居县| 平乡县| 岳池县| 吴堡县| 益阳市| 迁安市| 洪雅县| 丰台区| 福建省| 江油市| 晋州市| 巴林左旗| 万宁市| 乌什县| 城固县| 玉屏| 东港市| 天柱县| 奈曼旗| 津南区| 广灵县| 新宾| 日土县| 郴州市| 邵东县| 阜阳市| 鸡泽县| 贞丰县| 依兰县| 阳山县| 青冈县| 台江县| 静海县| 延安市| 吉首市| 轮台县| 宁明县|