js中const,var,let區別


js中三種定義變量的方式const, var, let的區別。

1.const定義的變量不可以修改,而且必須初始化。

1 const b = 2;//正確
2 // const b;//錯誤,必須初始化 
3 console.log('函數外const定義b:' + b);//有輸出值
4 // b = 5;
5 // console.log('函數外修改const定義b:' + b);//無法輸出 

2.var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯。

1 var a = 1;
2 // var a;//不會報錯
3 console.log('函數外var定義a:' + a);//可以輸出a=1
4 function change(){
5 a = 4;
6 console.log('函數內var定義a:' + a);//可以輸出a=4
7 } 
8 change();
9 console.log('函數調用后var定義a為函數內部修改值:' + a);//可以輸出a=4

3.let是塊級作用域,函數內部使用let定義后,對函數外部無影響。

1 let c = 3;
2 console.log('函數外let定義c:' + c);//輸出c=3
3 function change(){
4 let c = 6;
5 console.log('函數內let定義c:' + c);//輸出c=6
6 } 
7 change();
8 console.log('函數調用后let定義c不受函數內部定義影響:' + c);//輸出c=3

鏈接: http://www.cnblogs.com/ksl666/p/5944718.html

 

一.運行及關閉運行:

  在上一節中我們用shift+右擊在C:\vue\es6文件夾中打開命令行使用:npm run dev,打開了我們的vue界面。

  如果要關閉則在命令行中按住ctrl+C則可以關閉。

二.let和const使用方法:

  (1).在javascript中我們通常使用var會發生變量提升,即腳本開始運行時,變量已經存在了,但是沒有值,所以會輸出undefined,

  而let不會發生變量提升,這表示在聲明它之前,變量是不存在的,這時如果用到它,就會拋出一個錯誤。

  (2).var 是函數級作用域,let是塊級作用域:

  {

    let a = 10;

    var b = 1;

  }

  a // ReferenceError:a is  not defined.

  b // 1

  容易發生錯誤:

  var a = [];

  for(var i = 0; i < 10; i++){

    a[i] = function(){

      console.log(i);

    };

  }

  a[6](); // 10;

  如果將var i 改為 let i 此時a[6](); 結果是6;

  (3).let不允許在相同作用域內,重復聲明同一個變量:

   function(){

    let a = 10;

    var a = 1;

  }

  //報錯

  function(){

    let a = 10;

    let a = 1;

  }

  //報錯

  (4).const聲明一個只讀的常量。一旦聲明,常量的值就不能改變

  const PI = 3.1415;

  PI = 3;

  //TypeError: Assignment to constant variable.

  (5).const命令聲明的常量也是不提升,只能在聲明的位置后面使用。

  {

    const a = 10;

  }

  console.log(a);

  //報錯

  (6).const聲明的常量,也與let一樣不可重復聲明

  (7).對於復合類型的變量,變量名不指向數據,而是指向數據所在的地址。const命令只是保證變量名指向的地址不變,並不保證該地址的數據不變,

  所以將一個對象聲明為常量必須非常小心。

  const t = {};

  t.prop = 123;

  console.log(t.prop); // 123

  t = {}; // 報錯

三.推薦阮一峰老師網站:http://es6.ruanyifeng.com/

 

鏈接:http://www.cnblogs.com/zhihaospace/p/6242573.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM