亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript變量聲明var,let.const及區(qū)別淺析

 更新時(shí)間:2023年02月12日 21:42:23   投稿:mrr  
這篇文章主要介紹了JavaScript變量聲明var,let.const及區(qū)別淺析,需要的朋友可以參考下

var聲明變量的作用域限制在其聲明位置的上下文中

var x = 0; // x是全局變量,并且賦值為0。
console.log(typeof z); // undefined,因?yàn)閦還不存在。
function a() { // 當(dāng)a被調(diào)用時(shí),
 var y = 2;  // y被聲明成函數(shù)a作用域的變量,然后賦值成2。
 console.log(x, y);  // 0 2 
 function b() {    // 當(dāng)b被調(diào)用時(shí),
  x = 3; // 全局變量x被賦值為3,不生成全局變量。
  y = 4; // 已存在的外部函數(shù)的y變量被賦值為4,不生成新的全局變量。
  z = 5; // 創(chuàng)建新的全局變量z,并且給z賦值為5。 
 }     // (在嚴(yán)格模式下(strict mode)拋出ReferenceError)
 b();   // 調(diào)用b時(shí)創(chuàng)建了全局變量z。
 console.log(x, y, z); // 3 4 5
}
a();          // 調(diào)用a時(shí)同時(shí)調(diào)用了b。
console.log(x, z);   // 3 5
console.log(typeof y); // undefined,因?yàn)閥是a函數(shù)的本地(local)變量。

let 聲明的變量只在其聲明的塊或子塊中可用,var的作用域是整個(gè)封閉函數(shù)

function varTest() {
 var x = 1;
 if (true) {
  var x = 2; // 同樣的變量!
  console.log(x); // 2
 }
 console.log(x); // 2
}
function letTest() {
 let x = 1;
 if (true) {
  let x = 2; // 不同的變量
  console.log(x); // 2
 }
 console.log(x); // 1
}

在 ECMAScript 2015 中,let綁定不受變量提升的約束,這意味著let聲明不會(huì)被提升到當(dāng)前執(zhí)行上下文的頂部。
在塊中的變量初始化之前,引用它將會(huì)導(dǎo)致 ReferenceError(而使用 var 聲明變量則恰恰相反,該變量的值是 undefined )
當(dāng)在塊中使用時(shí),let將變量的作用域限制為該塊。注意var的作用域在它被聲明的函數(shù)內(nèi)的區(qū)

var a = 1;
var b = 2;
if (a === 1) {
 var a = 11; // the scope is global
 let b = 22; // the scope is inside the if-block
 console.log(a); // 11
 console.log(b); // 22
} 
console.log(a); // 11
console.log(b); // 2

const 常量必須在聲明的同時(shí)指定它的值.

const聲明創(chuàng)建一個(gè)值的只讀引用。但這并不意味著它所持有的值是不可變的(如引用內(nèi)容是對(duì)象),只是變量標(biāo)識(shí)符不能重新分配一個(gè)常量不能和它所在作用域內(nèi)的其他變量或函數(shù)擁有相同的名稱(chēng)

// 注意: 常量在聲明的時(shí)候可以使用大小寫(xiě),但通常情況下全部用大寫(xiě)字母。 
// 定義常量MY_FAV并賦值7
const MY_FAV = 7;
// 報(bào)錯(cuò)
MY_FAV = 20;
// 輸出 7
console.log("my favorite number is: " + MY_FAV);
// 嘗試重新聲明會(huì)報(bào)錯(cuò) 
const MY_FAV = 20;
// MY_FAV 保留給上面的常量,這個(gè)操作會(huì)失敗
var MY_FAV = 20; 
// 也會(huì)報(bào)錯(cuò)
let MY_FAV = 20;
// 注意塊范圍的性質(zhì)很重要
if (MY_FAV === 7) { 
  // 沒(méi)問(wèn)題,并且創(chuàng)建了一個(gè)塊作用域變量 MY_FAV
  // (works equally well with let to declare a block scoped non const variable)
  let MY_FAV = 20;
  // MY_FAV 現(xiàn)在為 20
  console.log('my favorite number is ' + MY_FAV);
  // 這被提升到全局上下文并引發(fā)錯(cuò)誤
  var MY_FAV = 20;
}
// MY_FAV 依舊為7
console.log("my favorite number is " + MY_FAV);
// 常量要求一個(gè)初始值
const FOO; // SyntaxError: missing = in const declaration
// 常量可以定義成對(duì)象
const MY_OBJECT = {"key": "value"};
// 重寫(xiě)對(duì)象和上面一樣會(huì)失敗
MY_OBJECT = {"OTHER_KEY": "value"};
// 對(duì)象屬性并不在保護(hù)的范圍內(nèi),下面這個(gè)聲明會(huì)成功執(zhí)行
MY_OBJECT.key = "otherValue";
// 也可以用來(lái)定義數(shù)組
const MY_ARRAY = [];
// It's possible to push items into the array
// 可以向數(shù)組填充數(shù)據(jù)
MY_ARRAY.push('A'); // ["A"]
// 但是,將一個(gè)新數(shù)組賦給變量會(huì)引發(fā)錯(cuò)誤
MY_ARRAY = ['B']

下面介紹下在javascript中有三種聲明變量的方式:var、let、const。

var 聲明全局變量,換句話理解就是,聲明在for循環(huán)中的變量,跳出for循環(huán)同樣可以使用。

for(var i=0;i<=1000;i++){ 
var sum=0; 
sum+=i; 
} 
alert(sum);

聲明在for循環(huán)內(nèi)部的sum,跳出for循環(huán)一樣可以使用,不會(huì)報(bào)錯(cuò)正常彈出結(jié)果

let:聲明塊級(jí)變量,即局部變量。

在上面的例子中,跳出for循環(huán),再使用sum變量就會(huì)報(bào)錯(cuò),有著嚴(yán)格的作用域,變量只作用域當(dāng)前隸屬的代碼塊,不可重復(fù)定義同一個(gè)變量,不可在聲明之前調(diào)用,必須先定義再使用,會(huì)報(bào)錯(cuò),循環(huán)體中可以用let

注意:必須聲明'use strict';后才能使用let聲明變量否則瀏覽并不能顯示結(jié)果,

const:用于聲明常量,也具有塊級(jí)作用域 ,也可聲明塊級(jí)。

const PI=3.14;

它和let一樣,也不能重復(fù)定義同一個(gè)變量,const一旦定義,無(wú)法修改。

總結(jié)

以上所述是小編給大家介紹的JavaScript變量聲明var,let.const及區(qū)別淺析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 關(guān)于前后端json數(shù)據(jù)的發(fā)送與接收詳解

    關(guān)于前后端json數(shù)據(jù)的發(fā)送與接收詳解

    這篇文章主要給大家介紹了關(guān)于前后端json數(shù)據(jù)發(fā)送與接收的相關(guān)資料,文中通過(guò)示例代碼詳細(xì)介紹了關(guān)于flask中的json數(shù)據(jù)接收和前端發(fā)送json數(shù)據(jù)等內(nèi)容,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • JavaScript實(shí)現(xiàn)帶緩沖效果的隨屏滾動(dòng)漂浮廣告代碼

    JavaScript實(shí)現(xiàn)帶緩沖效果的隨屏滾動(dòng)漂浮廣告代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)帶緩沖效果的隨屏滾動(dòng)漂浮廣告代碼,通過(guò)JavaScript結(jié)合時(shí)間函數(shù)動(dòng)態(tài)響應(yīng)頁(yè)面元素滾動(dòng)事件實(shí)現(xiàn)懸浮廣告的緩沖漂浮效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-11-11
  • 解決在layer.open中使用時(shí)間控件laydate失敗的問(wèn)題

    解決在layer.open中使用時(shí)間控件laydate失敗的問(wèn)題

    今天小編就為大家分享一篇解決在layer.open中使用時(shí)間控件laydate失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 如何通過(guò)javaScript去除字符串兩端的空白字符

    如何通過(guò)javaScript去除字符串兩端的空白字符

    這篇文章主要介紹了如何通過(guò)javaScripte去除字符串兩端的空白字符,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 用JavaScript和jQuery實(shí)現(xiàn)瀑布流

    用JavaScript和jQuery實(shí)現(xiàn)瀑布流

    本篇文章主要介紹了用JavaScript和jQuery實(shí)現(xiàn)瀑布流的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • js實(shí)現(xiàn)石頭剪刀布游戲

    js實(shí)現(xiàn)石頭剪刀布游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)石頭剪刀布游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 詳解如何提升JSON.stringify()的性能

    詳解如何提升JSON.stringify()的性能

    這篇文章主要介紹了詳解如何提升JSON.stringify()的性能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 瀏覽器頁(yè)面區(qū)域大小的js獲取方法

    瀏覽器頁(yè)面區(qū)域大小的js獲取方法

    瀏覽器頁(yè)面的區(qū)域大小如何獲取,在本有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-09-09
  • 收藏一個(gè)代碼

    收藏一個(gè)代碼

    收藏一個(gè)代碼...
    2006-08-08
  • js獲取form表單中name屬性的值

    js獲取form表單中name屬性的值

    今天小編就為大家分享一篇關(guān)于js獲取form表單中name屬性的值,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02

最新評(píng)論