'use strict';
(function() {
var varTest;
let letTest;
console.log(varTest); //輸出undefined
console.log(letTest); //輸出undefined
}());
使用未聲明的變量如贷,表現(xiàn)不同:
(function() {
console.log(varTest); //輸出undefined(注意要注釋掉下面一行才能運(yùn)行)
console.log(letTest); //直接報(bào)錯(cuò):ReferenceError: letTest is not defined
var varTest = 'test var OK.';
let letTest = 'test let OK.';
}());
重復(fù)聲明同一個(gè)變量時(shí),表現(xiàn)不同:
'use strict';
(function() {
var varTest = 'test var OK.';
let letTest = 'test let OK.';
var varTest = 'varTest changed.';
let letTest = 'letTest changed.'; //直接報(bào)錯(cuò):SyntaxError: Identifier 'letTest' has already been declared
console.log(varTest); //輸出varTest changed.(注意要注釋掉上面letTest變量的重復(fù)聲明才能運(yùn)行)
console.log(letTest);
}());
變量作用范圍到踏,表現(xiàn)不同
'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."杠袱,內(nèi)部"{}"中聲明的varTest變量覆蓋外部的letTest聲明
console.log(letTest); //輸出"test let OK.",內(nèi)部"{}"中聲明的letTest和外部的letTest不是同一個(gè)變量
}());