(function() { var varTest; let letTest; console.log(varTest); //输出undefined console.log(letTest); //输出undefined }());
2.使用未声明的变量,表现不同:
1 2 3 4 5 6 7 8 9
'use strict';
(function() { console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行) console.log(letTest); //直接报错: Uncaught ReferenceError: letTest is not defined
var varTest = 'test var OK.'; let letTest = 'test let OK.'; }());
3.重复声明同一个变量时,表现不同:
1 2 3 4 5 6 7 8 9 10 11 12 13
'use strict';
(function() { var varTest = 'test var OK.'; var varTest = 'varTest changed.'; console.log(varTest); //输出varTest changed. }());
(function() { let letTest = 'test let OK.'; let letTest = 'letTest changed.'; console.log(letTest); ///直接报错: Uncaught SyntaxError: Identifier 'letTest' has already been declared }());
4.变量作用范围,表现不同
1 2 3 4 5 6 7 8 9 10 11 12 13 14
'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不是同一个变量 }());