1.聲明后未賦值,表現相同
//一個例子'use strict';(function() { var varTest; let letTest; console.log(varTest); //輸出undefined console.log(letTest); //輸出undefined}());
2.使用未聲明的變量,表現不同
//一個例子(function() { console.log(varTest); //輸出undefined(注意要注釋掉下面一行才能運行) console.log(letTest); //直接報錯:ReferenceError: letTest is not defined var varTest = 'test var OK.'; let letTest = 'test let OK.';}());
3.重復聲明同一個變量時,表現不同
//一個例子'use strict';(function() { 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);}());
4.變量作用范圍,表現不同
//一個例子'use strict';(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不是同一個變量}());
5.const定義的變量不可以修改,而且必須初始化
//一個例子const b = 2;//正確// const b;//錯誤,必須初始化 console.log('函數外const定義b:' + b);//有輸出值// b = 5;// console.log('函數外修改const定義b:' + b);//無法輸出
6.var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯
var a = 1;// var a;//不會報錯console.log('函數外var定義a:' + a);//可以輸出a=1function change(){a = 4;console.log('函數內var定義a:' + a);//可以輸出a=4} change();console.log('函數調用后var定義a為函數內部修改值:' + a);//可以輸出a=4
7.let是塊級作用域,函數內部使用let定義后,對函數外部無影響
let c = 3;console.log('函數外let定義c:' + c);//輸出c=3function change(){let c = 6;console.log('函數內let定義c:' + c);//輸出c=6} change();console.log('函數調用后let定義c不受函數內部定義影響:' + c);//輸出c=3
學習到此結束!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答