欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

var?let?const關(guān)鍵字之間的區(qū)別及使用場(chǎng)景示例詳解

 更新時(shí)間:2023年12月24日 10:51:57   作者:Grape  
這篇文章主要為大家介紹了var?let?const關(guān)鍵字之間的區(qū)別及使用場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

在寫(xiě)js和ts代碼的時(shí)候,經(jīng)常會(huì)用到var、let、const關(guān)鍵字,雖然一直用,但是從來(lái)沒(méi)有去仔細(xì)研究他們之間的區(qū)別,偶爾遇到的使用的問(wèn)題,就直接換了另一個(gè)關(guān)鍵字,其中最明顯的就是我使用const沒(méi)有進(jìn)行初始化發(fā)現(xiàn)不行,就直接換成使用let就可以了,這篇文章就是為了研究其他之間的區(qū)別

一、var變量

1、var在全局作用域的應(yīng)用,使用var關(guān)鍵字聲明的變量,都會(huì)被提升到該作用域的最頂部,這就是我們常說(shuō)的變量提升

console.log(a); //undefind
var a = 1;
console.log(a); //1

等同于

var a;
console.log(a); //undefined
a = 1; 
console.log(a); //1

全局變量

在函數(shù)外聲明的變量作用域是全局的:

var carName = "Volvo";
  function person(){
    console.log(carName); // "Volvo"
  } 
  person();

局部變量

在函數(shù)內(nèi)聲明的變量作用域是局部的(函數(shù)內(nèi)):

function person() {
    var carName = "Volvo";
    console.log(carName);  // "Volvo"
   }
 person();
 console.log(carName); //報(bào)錯(cuò) Uncaught ReferenceError: a is not defined

使用 var 關(guān)鍵字在塊級(jí)作用域存在的問(wèn)題

var a = 10;
 console.log(a); // 10
  { 
    var a = 2;
    console.log(a); // 2
  }
 console.log(a); // 2

重置變量

使用 var 關(guān)鍵字聲明的變量在任何地方都可以修改:

var x = 2;
console.log(x); // 2
var x = 3;
console.log(x); // 3

二、塊級(jí)作用域let、const

let、const聲明和var聲明用法一樣,不同點(diǎn)在于let、var聲明的是變量,const聲明的是常量。var存在變量提升,let、const不存在變量提升。var在全局作用域聲明的變量會(huì)掛載在window對(duì)象上

1、let 聲明

let聲明的是變量,沒(méi)有var那樣的變量提升,let聲明的變量只在當(dāng)前作用域中有效

全局變量

console.log(x);//報(bào)錯(cuò) Unexpected identifier 'Uncaught'
  let x = 1;
  console.log(x);// 1

塊級(jí)作用域

let 中不存在變量提升

{
      console.log(x); //報(bào)錯(cuò) Unexpected identifier 'Uncaught'
      let x = 1;
      console.log(x);
   }

重置變量

在相同的作用域或塊級(jí)作用域中,不能let關(guān)鍵字來(lái)重置 var 關(guān)鍵字聲明

var x = 2;       // 合法
  let x = 3;       // 不合法
  {
      var x = 4;   // 合法
      let x = 5   // 不合法
  }

在相同的作用域或塊級(jí)作用域中

let x = 2;       // 合法
let x = 3;       // 不合法
{
    let x = 4;   // 合法
    let x = 5;   // 不合法
}

let 關(guān)鍵字在不同作用域,可以重新申明和賦值

let x = 2;       // 合法
{
    let x = 3;   // 合法
}
{
    let x = 4;   // 合法
}

2、const 聲明

const聲明的是常量,常量不可以修改。常量定義必須初始化值,如果不初始化值就會(huì)報(bào)錯(cuò)。

全局變量

{
        console.log(x); //報(bào)錯(cuò) Unexpected identifier 'Uncaught'
        const x = 1;
        console.log(x); // 1
    }

局部變量

{
        const x = 1;
        console.log(x); //1;
    }
    console.log(x)// 報(bào)錯(cuò) Unexpected identifier 'Uncaught'

必須初始化,不能重新賦值

const x;
  console.log(x);// Uncaught SyntaxError: Missing initializer in const declaration
  const x = 10;
  x = 20; // 報(bào)錯(cuò),const 變量不可重新賦值

對(duì)象和數(shù)組,對(duì)于引用類(lèi)型(對(duì)象和數(shù)組),const 保證的是變量引用的地址不變,但對(duì)象或數(shù)組本身是可以修改的。

const x = [1, 2, 3];
x.push(4); // 合法,數(shù)組本身可以修改
x = [5, 6, 7]; // 報(bào)錯(cuò),變量引用地址不可變

總結(jié)

let、var聲明的是變量,const聲明的是常量。var存在變量提升,let、const不存在變量提升。var在全局作用域聲明的變量會(huì)掛載在window對(duì)象上,而let const聲明的變量則不會(huì)有這一行為。let聲明的是變量,沒(méi)有var那樣的變量提升,let聲明的變量只在當(dāng)前作用域中有效,const聲明的是常量,常量不可以修改。常量定義必須初始化值,如果不初始化值就會(huì)報(bào)錯(cuò)。

以上就是var let const關(guān)鍵字之間的區(qū)別及使用場(chǎng)景示例詳解的詳細(xì)內(nèi)容,更多關(guān)于var let const關(guān)鍵字的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 你不知道的JS?ES6字符串標(biāo)簽函數(shù)分享

    你不知道的JS?ES6字符串標(biāo)簽函數(shù)分享

    字符串標(biāo)簽函數(shù)是一種特殊的函數(shù)調(diào)用語(yǔ)法,本文將深入探討ES6中字符串標(biāo)簽函數(shù)的工作原理,并結(jié)合具體的代碼展示它的威力,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-06-06
  • JavaScript作用域與作用域鏈?zhǔn)褂弥攸c(diǎn)講解

    JavaScript作用域與作用域鏈?zhǔn)褂弥攸c(diǎn)講解

    當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈,作用域鏈的用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的所有變量和函數(shù)的有序訪問(wèn),下面這篇文章主要給大家介紹了關(guān)于JavaScript作用域與作用域鏈的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 深入淺析Extjs中store分組功能的使用方法

    深入淺析Extjs中store分組功能的使用方法

    這篇文章主要介紹了深入淺析Extjs中store分組功能的使用方法的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • 使用js的replace()方法查找字符示例代碼

    使用js的replace()方法查找字符示例代碼

    JavaScript具有一個(gè)非常有用的方法replace(),可以用它利用備選字符集途歡指定的字符,下面有個(gè)不錯(cuò)的示例,大家可以嘗試操作下
    2013-10-10
  • 微信二次分享報(bào)錯(cuò)invalid signature問(wèn)題及解決方法

    微信二次分享報(bào)錯(cuò)invalid signature問(wèn)題及解決方法

    基于微信公眾號(hào)開(kāi)發(fā)的h5頁(yè)面(使用jssdk接口),由用戶(hù)A分享給用戶(hù)B,用戶(hù)B再次分享這個(gè)頁(yè)面時(shí),不能成功分享。這篇文章主要介紹了微信二次分享報(bào)錯(cuò)invalid signature問(wèn)題及解決方法,需要的朋友可以參考下
    2019-04-04
  • JavaScript閉包和回調(diào)詳解

    JavaScript閉包和回調(diào)詳解

    本文主要講解了JavaScript閉包和回調(diào),閉包的概念和特性,結(jié)合實(shí)例分析了使用步驟與方法
    2017-08-08
  • 微信小程序  TLS 版本必須大于等于1.2問(wèn)題解決

    微信小程序 TLS 版本必須大于等于1.2問(wèn)題解決

    這篇文章主要介紹了微信小程序 TLS 版本必須大于等于1.2問(wèn)題解決的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • echarts圖表無(wú)數(shù)據(jù)/空數(shù)據(jù)如何展示"暫無(wú)數(shù)據(jù)"

    echarts圖表無(wú)數(shù)據(jù)/空數(shù)據(jù)如何展示"暫無(wú)數(shù)據(jù)"

    在開(kāi)發(fā)echarts的時(shí)候我們不得不考慮數(shù)據(jù)為空的情況,其實(shí)有很多種解決辦法,下面這篇文章主要給大家介紹了關(guān)于echarts圖表無(wú)數(shù)據(jù)/空數(shù)據(jù)如何展示“暫無(wú)數(shù)據(jù)”的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 有關(guān)json_decode亂碼及NULL的問(wèn)題

    有關(guān)json_decode亂碼及NULL的問(wèn)題

    json decode出現(xiàn)中文亂碼,返回null,很多朋友都遇到過(guò)吧,該怎么解決呢?下面小編把解決辦法分享在腳本之家網(wǎng)站上,供大家學(xué)習(xí)
    2015-10-10
  • 微信小程序人臉識(shí)別功能代碼實(shí)例

    微信小程序人臉識(shí)別功能代碼實(shí)例

    這篇文章主要介紹了微信小程序人臉識(shí)別功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論