久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      了解JS中的var、let和const

      了解JS中的var、let和const

      本篇文章給大家介紹一下JavaScript 的 var,let 和 const,有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

      var

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

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

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

      當(dāng)出現(xiàn)在全局作用域內(nèi)時,var 創(chuàng)建一個全局變量。另外它還會在 window 上創(chuàng)建一個具有相同名稱的 全局屬性

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

      當(dāng)在函數(shù)內(nèi)部聲明時,變量的作用域為該函數(shù):

      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"

      意外的全局變量

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

      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 聲明的變量都可以在以后進行重新分配重新聲明。重新聲明的例子:

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

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

      塊作用域

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

      let city = "Florence";  console.log(window.city); // undefined

      當(dāng)在函數(shù)內(nèi)部聲明時,變量的作用域為該函數(shù):

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

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

      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"

      暫存死區(qū)

      let 聲明可能會被提升,但是會產(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 聲明。另外一個例子:

      function bubble() {   console.log(city); // TDZ   let city = "Siena"; }  bubble();  // ReferenceError: can't access lexical declaration 'city' before initialization

      可以看到兩個例子中產(chǎn)生的異常都是一樣的:證明了“暫存死區(qū)”的出現(xiàn)。

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

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

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

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

      塊作用域

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

      const city = "Florence";  console.log(window.city); // undefined

      當(dāng)在函數(shù)內(nèi)部聲明時,變量的作用域為該函數(shù):

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

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

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

      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'

      總結(jié)

      塊作用域 暫存死區(qū) 創(chuàng)建全局屬性 可重新分配 可重新聲明
      var
      let
      const

      英文原文地址:https://www.valentinog.com/blog/var/

      作者:Valentino

      相關(guān)免費學(xué)習(xí)推薦:js視頻教程

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號