var j=20;
console.log(i);//undefined
console.log(j);//20
for( var i=0;i<3;i++){
var j=10;
console.log(j);//10
}
console.log(j);//10
console.log(i);//3
console.log(z)//undefined
while(true){
var z = 10;
break;
}
console.log(z)//10
從上述代碼的實驗中便能證明js中用var聲明不存在塊級作用域,只有函數作用域,因此無論是for循環中還是while循環中用var定義的變量都是全局變量。
想要有塊級作用域就得用let來聲明。
另外while循環中必需要有循環條件,空不能執行(報錯),false,0,"",null,undefined為false
還有兩個小知識
1.聲明或者調用時對象的屬性名會被強制轉換成字符串類型
var sample = {
1 : "abc",
5 : 100
};
console.log("sample 5 is: " + sample[5]);
console.log("sample 5 is: " + sample["5"]);
通過這段代碼實驗便能得知
2.在數組中字符串則必須加上"",否則便會報錯,因為在數組中是所有類型都可以存入的,所以數組中不存在自動轉換成字符串類型,需要手動加上""
var arr=[a,b,c]//像這樣便會報錯
必須加上""
var arr=["a","b","c"]
這是兩個新手可能犯的小錯誤,在此寫下