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

首頁 > 編程 > JavaScript > 正文

ES6入門教程之let和const命令詳解

2019-11-19 16:34:25
字體:
來源:轉載
供稿:網友

前言

在javascript中,我們都知道使用var來聲明變量。javascript是函數級作用域,函數內可以訪問函數外的變量,函數外不能訪問函數內的變量。

函數級作用域會導致一些問題就是某些代碼塊內的變量會在全局范圍內有效,這我們是非常熟悉的:

for (var i = 0; i < 10; i++) { console.log(i); // 0,1,2...,9}console.log(i); //10if(true){ var s = 20;}console.log(s); //20

在es6中增加了let(變量)和const(常量)來聲明變量,使用的是塊級作用域,變量聲明只在代碼塊內有效,下面來看看詳細的介紹:

let命令

ES6新增了let命令用于聲明變量。它的用處和var很相似,只不過let所聲明的變量只在let命令所在的代碼塊內有效。

看下下面代碼:

 {  let a = 10;  var b = 9; } alert( a ); // ReferenceError: a is not defined alert( b ); //9

再看看下面代碼:

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

而如果使用let聲明的話,最后輸出的值是“6”。代碼如下:

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

此外,let聲明的變量不會提升。看下下面的代碼片段。

 function do_someting() {  console.log( a ); //ReferenceError  let a = 2; }

最后,let不允許在相同的作用域內,重復聲明同一個變量。

 // 報錯 {  let a = 10;  var a = 1; } // 報錯 {  let a = 10;  let a = 1; }

let實際上是JavaScript增加的塊級作用域。

 function foo() {  let n = 6;   if (true) {   let n = 10;  }  console.log( n ); //6 }

上面代碼有兩個代碼塊,都聲明了n變量,運行后輸出的是6。這表明外層代碼塊不受內層代碼塊的影響。如果,改成使用var定義變量n的話,最后輸出的就是10.

另外,ES6還規定,函數本身的作用域在其所在的代碼塊作用域之內。

 function f() { console.log("I am outside"); } (function () {  if (false) {   //重復聲明一次函數f   function f() {    console.log("I am inside");   }  }  f(); }());

上面的代碼片段,在ES5中運行會得到“Iam inside”, 但是在ES6中運行,則會得到“Iam outside”。

const命令

const是用來聲明常量的。一旦聲明,其值就不能改變。

 const PI = 3.1415; console.log( PI ); //PI PI = 3; console.log( PI ); //3.1415 const PI = 3.1; console.log( PI ); //3.1415

有一點需要我們注意的是,對常量的重復定義不會報錯,它只會默默的失敗。

const的作用域與let命令相同:即只在聲明所在的塊級作用域內有效。

 if(condition) {  const MAX = 5; } // 常量MAX在此處不可見(或者說不可得)

此外,const常量也不可重復聲明。

 var message = "Hello!"; let age = 25; //以下兩行都會報錯 const message = "Goodbye!"; const age = 30;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 社会| 恭城| 通江县| 什邡市| 晋州市| 诏安县| 金寨县| 绿春县| 霸州市| 隆安县| 江口县| 醴陵市| 汤阴县| 全椒县| 腾冲县| 安泽县| 北宁市| 阿克苏市| 宝山区| 滦平县| 巴林右旗| 南靖县| 宜宾市| 双鸭山市| 博野县| 云阳县| 桦川县| 怀化市| 阳春市| 屏东市| 靖江市| 汕头市| 澄城县| 社会| 宜丰县| 柘城县| 漳州市| 邵东县| 阿克苏市| 通江县| 大足县|