国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript變量聲明var,let.const及區別淺析

2024-05-06 16:43:53
字體:
來源:轉載
供稿:網友

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

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

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

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聲明不會被提升到當前執行上下文的頂部。
在塊中的變量初始化之前,引用它將會導致 ReferenceError(而使用 var 聲明變量則恰恰相反,該變量的值是 undefined )
當在塊中使用時,let將變量的作用域限制為該塊。注意var的作用域在它被聲明的函數內的區

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); // 11console.log(b); // 2

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

const聲明創建一個值的只讀引用。但這并不意味著它所持有的值是不可變的(如引用內容是對象),只是變量標識符不能重新分配一個常量不能和它所在作用域內的其他變量或函數擁有相同的名稱

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

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

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

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

聲明在for循環內部的sum,跳出for循環一樣可以使用,不會報錯正常彈出結果

let:聲明塊級變量,即局部變量。

在上面的例子中,跳出for循環,再使用sum變量就會報錯,有著嚴格的作用域,變量只作用域當前隸屬的代碼塊,不可重復定義同一個變量,不可在聲明之前調用,必須先定義再使用,會報錯,循環體中可以用let

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

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

const PI=3.14;

它和let一樣,也不能重復定義同一個變量,const一旦定義,無法修改。

總結

以上所述是小編給大家介紹的JavaScript變量聲明var,let.const及區別淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂托克前旗| 雷山县| 亳州市| 开化县| 阳高县| 房产| 东光县| 锦屏县| 开原市| 安阳县| 泸水县| 平塘县| 山西省| 揭西县| 基隆市| 河东区| 博爱县| 吉木乃县| 西贡区| 两当县| 丹东市| 盐山县| 大埔县| 元朗区| 大洼县| 乡宁县| 兴山县| 紫金县| 综艺| 宁都县| 临桂县| 内乡县| 永胜县| 绥芬河市| 五莲县| 玉环县| 高平市| 长兴县| 安塞县| 潜山县| 余江县|