js中let和var定義變量的區別


let變量之前沒見過,剛遇到,探探究竟。

以下轉自:http://blog.csdn.net/nfer_zhuang/article/details/48781671

聲明后未賦值,表現相同

(function() {
      var varTest;
      let letTest;
      console.log(varTest); //輸出undefined
      console.log(letTest); //輸出undefined
    }());

使用未聲明的變量,表現不同:

(function() {
  console.log(varTest); //輸出undefined(注意要注釋掉下面一行才能運行)
  console.log(letTest); //直接報錯:ReferenceError: letTest is not defined

  var varTest = 'test var OK.';
  let letTest = 'test let OK.';
}());

重復聲明同一個變量時,表現不同:

(function() {
      "use strict";
      var varTest = 'test var OK.';
      let letTest = 'test let OK.';

      var varTest = 'varTest changed.';
      let letTest = 'letTest changed.'; //直接報錯:SyntaxError: Identifier 'letTest' has already been declared

      console.log(varTest); //輸出varTest changed.(注意要注釋掉上面letTest變量的重復聲明才能運行)
      console.log(letTest);
    }());

變量作用范圍,表現不同:

(function() {
  var varTest = 'test var OK.';
  let letTest = 'test let OK.';

  {
    var varTest = 'varTest changed.';
    let letTest = 'letTest changed.';
  }

  console.log(varTest); //輸出"varTest changed.",內部"{}"中聲明的varTest變量覆蓋外部的letTest聲明
  console.log(letTest); //輸出"test let OK.",內部"{}"中聲明的letTest和外部的letTest不是同一個變量
}());

備注:

使用 let 語句聲明一個變量,該變量的范圍限於聲明它的塊中。  可以在聲明變量時為變量賦值,也可以稍后在腳本中給變量賦值。  

使用 let 聲明的變量,在聲明前無法使用,否則將會導致錯誤。

如果未在 let 語句中初始化您的變量,則將自動為其分配 JavaScript 值 undefined


免責聲明!

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



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