麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB開發 > 正文

var、let、const小解

2024-04-27 15:14:26
字體:
來源:轉載
供稿:網友

var聲明的是全局變量,let只作用在塊級作用域內,const和let作用域相同但是一般只允許賦值一次。


let 對比 var

let的作用域是塊,而var的作用域是函數

var a = 5;var b = 10;if (a === 5) { let a = 4; // The scope is inside the if-block var b = 1; // The scope is inside the function console.log(a); // 4 console.log(b); // 1} console.log(a); // 5console.log(b); // 1

let 在循環中

可以用 let 來代替 var ,在 for 定義塊中使用塊級變量.

for (let i = 0; i < 10; i++) { console.log(i); // 0, 1, 2, 3, 4 ... 9}console.log(i); // i is not defined

let 的暫存死區與錯誤

在同一個函數或同一個作用域中用let重復定義一個變量將引起

if (x) { let foo; let foo; // TypeError thrown.}

在 ECMAScript 2015中, let 將會提升這個變量到語句塊的頂部。然而,在這個語句塊中,在變量聲明之前引用這個變量會導致一個 ReferenceError的結果, 因為let變量 在”暫存死區” (從塊的開始到聲明這段).

function do_something() { console.log(foo); // ReferenceError let foo = 2;}

另外一個var帶來的不合理場景就是用來計數的循環變量泄露為全局變量,看下面的例子:

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

上面代碼中,變量i是var聲明的,在全局范圍內都有效。所以每一次循環,新的i值都會覆蓋舊值,導致最后輸出的是最后一輪的i的值。而使用let則不會出現這個問題。

var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 6

const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久最新网址 | 国产精品成人久久 | 热99在线视频 | 黄色成人短视频 | 久久精品视频日本 | 黄色大片大毛片 | 美女一级毛片 | 成年人免费视频大全 | 欧美一级精品片在线看 | 亚洲嫩草av | 三级国产三级在线 | 日韩电影一区二区 | 视频一区二区三区在线 | 欧美精品一级 | 有兽焉免费动画 | 午夜激情视频网站 | 国产精品免费观看视频 | 国产韩国精品一区二区三区久久 | 手机黄色小视频 | 免费观看9x视频网站在线观看 | 在线成人一区二区 | 九九热精品在线视频 | 视频在线91 | 在线观看免费污视频 | 国产激情网 | 亚欧美一区二区 | 一级性色 | 香蕉视频网站在线观看 | 伊人在线| 成人福利视频在线观看 | av亚洲在线观看 | 国产亚洲精品久久久久久大师 | 天天舔夜夜操 | 最新中文字幕第一页视频 | 欧美日韩精品不卡一区二区三区 | 怦然心动50免费完整版 | 久久久久久久久日本理论电影 | 欧美日韩亚洲成人 | 视频一区二区在线播放 | 美女黄网站免费观看 | 亚洲成人欧美在线 |