以下轉自: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.'; }());
重復聲明同一個變量時,表現不同:
按 Ctrl+C 復制代碼
按 Ctrl+C 復制代碼
變量作用范圍,表現不同:
(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。