1. 重復(fù)的聲明
如果聲明時(shí)未指定初始值告希,那么它的初始值就是 undefined琼蚯。
[JavaScript]
var i;
console.log(i); //=> "undefined"
2. 重復(fù)的聲明
使用 var 語(yǔ)句重復(fù)聲明變量是合法且無(wú)害的地粪。
[JavaScript]
var scope = "global";
function foo(){
var scope = "local";
return scope;
}
foo(); //=> "local"
console.log(scope); //=> "global"
3. 遺漏的聲明
ECMAScript5 嚴(yán)格模式中首量,給一個(gè)沒(méi)有聲明的變量賦值也會(huì)報(bào)錯(cuò)荞驴。然后從歷史上講不皆,在非嚴(yán)格模式下,如果給一個(gè)未聲明的變量賦值熊楼,JavaScript實(shí)際上會(huì)給全局對(duì)象創(chuàng)建一個(gè)同名屬性(全局變量)霹娄。這意味著你可以僥幸不聲明全局變量,但這不是一個(gè)好習(xí)慣鲫骗。
[JavaScript]
scope = "global"; //聲明一個(gè)全局變量(未用var關(guān)鍵字聲明)
function checkScope() {
scope = "local"; //修改了全局變量
myScope = "my local"; //顯示地聲明了新的全局變量
return [scope, myScope];
}
checkScope();
console.log(scope); //=> "local"
console.log(myScope); //=> "my local"