函數作用域以及塊級作用域


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"]

這是兩個新手可能犯的小錯誤,在此寫下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM