国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

var let const

JaysonWang / 1850人閱讀

摘要:和沒有變量提升類似這些功能主要是為了減少程序運(yùn)行時(shí)的錯(cuò)誤使代碼更加規(guī)范不允許重復(fù)聲明同一個(gè)作用域內(nèi)不允許重復(fù)聲明同一個(gè)變量。

let 和 var

相信有很多前端工程師除了在聲明函數(shù)時(shí)會用到 function 其余的變量聲明一律使用 var, 不過隨著瀏覽器對es6逐漸支持我們應(yīng)該學(xué)著使用 letconst 而不是使用存在諸多弊端的 var

var 存在著哪些弊端呢?

沒有塊級作用域,很容易聲明全局變量

變量提升

可以重復(fù)聲明

典型的面試題

var arr = [];
for (var i = 0; i < 10; i++) {
    arr[i] = function () {
        console.log(i);
    }
}

arr[6](); // 期望輸出 6 實(shí)際輸出 10
arr[7](); // 期望輸出 7 實(shí)際輸出 10
arr[8](); // 期望輸出 8 實(shí)際輸出 10

在ES6誕生之前我們的解決方法基本是這樣的

var arr = [];
for (var i = 0; i < 10; i++) {
    (function (i) {
        arr[i] = function () {
            console.log(i);
        }
    }(i))
}

arr[6](); // 6
arr[7](); // 7
arr[8](); // 8

ES6誕生以后呢

let arr = [];
for (let i = 0; i < 10; i++) {
    arr[i] = function () {
        console.log(i);
    }
}

arr[6](); // 6
arr[7](); // 7
arr[8](); // 8

是不是簡單了很多, 這一切都要?dú)w功于let的塊級作用域, 這里使用 var 聲明的i是全局變量, 當(dāng)for循環(huán)執(zhí)行完成以后, i的值已經(jīng)變成了10, 而在 console.log(i) 的時(shí)候訪問的同樣是全局下的 i 因此我們會發(fā)現(xiàn)無論執(zhí)行哪個(gè)函數(shù) i 的值都是10;
而使用 let 呢, 因?yàn)?let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效, 所以每一次循環(huán)的i其實(shí)都是一個(gè)新的變量, 而當(dāng)執(zhí)行 console.log(i) 時(shí), js會沿著作用域鏈?zhǔn)紫日业阶罱?i 并輸出, 因此會輸出我們所期望的 i 值.

除了存在塊級作用域 相對于 var 不同之處還有

不存在變量提升

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

console.log(b); // b is not defined
let b = 2;

這里用 var 聲明變量時(shí), 因?yàn)榇嬖谧兞刻嵘? 在聲明之前訪問該變量會輸出 undefined 并不會報(bào)錯(cuò), 而使用 let 聲明的變量在聲明之前訪問則會報(bào)錯(cuò), 這樣更符合人的常規(guī)邏輯.

暫時(shí)性死區(qū)

var a = 123;

if (true) {
  a = "abc"; // a is undefined;
  let a;
}

暫時(shí)性死區(qū)規(guī)定在聲明之前就使用這些變量,就會報(bào)錯(cuò)。和沒有變量提升類似, 這些功能主要是為了減少程序運(yùn)行時(shí)的錯(cuò)誤, 使代碼更加規(guī)范.

不允許重復(fù)聲明

let c = 2;
let c = 3; // Identifier "c" has already been declared

同一個(gè)作用域內(nèi) 不允許重復(fù)聲明同一個(gè)變量。

不會成為全局對象(window)的屬性

var a = 3;
console.log(window.a); // 3
let b = 4;
console.log(window.b); // undefined;
const

除了 let 有時(shí)候我們也許更需要 const

constlet 的唯一區(qū)別就是,const 不可以被更改,所以當(dāng)聲明變量的時(shí)候,尤其是在聲明容易被更改的全局變量的時(shí)候,盡量使用 const

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108286.html

相關(guān)文章

  • javascript 聲明變量varletconst詳解及示例

    摘要:概述發(fā)布前,只能通過聲明變量的方式,常量塊級變量函數(shù)變量這些概念的差別都不能很好的體現(xiàn)出來,于此同時(shí),加入你要使用或者提供一個(gè),聲明的變量可隨時(shí)被修改和重新分配的問題,會讓你時(shí)刻擔(dān)心代碼是否能正常運(yùn)行。 1. var、let、const概述 ES6發(fā)布前,Javascript只能通過var聲明變量的方式,常量、塊級變量、函數(shù)變量這些概念的差別都不能很好的體現(xiàn)出來,于此同時(shí),加入你要使用...

    tuomao 評論0 收藏0
  • varlet/const的區(qū)別

    showImg(https://segmentfault.com/img/remote/1460000017757580); let和const是 ES6 新增的命令,用于聲明變量,這兩個(gè)命令跟 ES5 的var有許多不同,并且let和const也有一些細(xì)微的不同,再認(rèn)真閱讀了阮一峰老師的文檔后,發(fā)現(xiàn)還是有一些不知道的細(xì)節(jié)... 博客、前端積累文檔、公眾號、GitHub 內(nèi)容: var和let...

    SHERlocked93 評論0 收藏0
  • javascript中varletconst聲明的區(qū)別

    摘要:聲明的變量存在變量提升,聲明的變量不存在變量提升。聲明的變量允許重新賦值,聲明的變量不允許重新賦值。注意跨腳本聲明重復(fù)變量也會報(bào)錯(cuò)。中出現(xiàn)的任何元素在聲明中出現(xiàn),語法錯(cuò)誤。中的是如此的怪異。對中的聲明進(jìn)行實(shí)例化。 我在上一篇文章javascript中詞法環(huán)境、領(lǐng)域、執(zhí)行上下文以及作業(yè)詳解中的最后稍微提到了有關(guān)var、let、const聲明的區(qū)別,在本篇中我會重點(diǎn)來分析它們之間到底有什么...

    Yujiaao 評論0 收藏0
  • 深入理解ES6 - var-let-const

    摘要:聲明變量不存在變量提升。臨時(shí)死區(qū),而且不能在聲明之前訪問它。禁止重復(fù)聲明相同的變量,否則報(bào)錯(cuò)。不存在變量提升,一旦執(zhí)行快外就會立即銷毀。聲明不允許修改綁定,但允許修改值,也就是說用創(chuàng)建對象后,可以修改該對象的屬性值。 知識點(diǎn) var 聲明變量: 1、存在變量提升,實(shí)際上var無論在哪里聲明,都會被當(dāng)做當(dāng)前的作用域頂部聲明變量。 2、可以重復(fù)聲明,后聲明的變量會覆蓋前聲明的變量。 let...

    alexnevsky 評論0 收藏0
  • ES6精解:letconst、塊級作用域

    摘要:命令新增了命令,跟類似,都是用來聲明變量的不允許重復(fù)聲明報(bào)錯(cuò)不存在變量提升報(bào)錯(cuò)正確寫法為既要先定義,后面才能有這個(gè)值,否則會報(bào)錯(cuò),如果改成會提示未定義,但是就直接報(bào)錯(cuò)了暫時(shí)性死區(qū)只要在塊級作用域里面存在則它所聲明的變量就綁定在這個(gè)塊級作用域 let命令 ES6新增了let命令,跟var類似,都是用來聲明變量的 1.不允許重復(fù)聲明 { let a = 1; let a =...

    BWrong 評論0 收藏0
  • ES6 系列之 letconst

    摘要:塊級作用域存在于函數(shù)內(nèi)部塊中字符和之間的區(qū)域和塊級聲明用于聲明在指定塊的作用域之外無法訪問的變量。和都是塊級聲明的一種。值得一提的是聲明不允許修改綁定,但允許修改值。這意味著當(dāng)用聲明對象時(shí)沒有問題報(bào)錯(cuò)臨時(shí)死區(qū)臨時(shí)死區(qū),簡寫為。 塊級作用域的出現(xiàn) 通過 var 聲明的變量存在變量提升的特性: if (condition) { var value = 1; } console.lo...

    PascalXie 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<