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"]
这是两个新手可能犯的小错误,在此写下