JavaScript 学习笔记(1)
变量
变量提升
- JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升
console.log(a);
var a=1;
从顺序上来说上面的代码虽然会报错,但是因为JavaScript存在变量提升,因此真正运行的时候会按照下面的结果运行,并不会报错,会得到a是undefined的结果。
var a;
console.log(a);
a=1;
switch结构
- 上面代码根据变量x的值,选择执行相应case如果所有case都不符合,则执行最后的default部分。需要注意是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。
- 另外,在使用case语句进行比较的时候,采用的是严格运算符
===,这意味着比较的时候不会发生类型转换
比如下面这个例子:
var x =1;
switch(x){
case x:
console.log("x is equal to 1");
case 2:
console.log("x is equal to 2");
default:
console.log("x is equal to others");
}
//x is equal to 1
//x is equal to 2
//x is equal to others
正确的应该是:
var x =1;
switch(x){
case x:
console.log("x is equal to 1");
break;
case 2:
console.log("x is equal to 2");
break;
default:
console.log("x is equal to others");
}
//x is equal to 1
break与continue在循环中的区别
- break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
- break语句用于跳出代码块或循环。
var i=1;
for(;i<50;i++){
console.log(i);
if(i % 3 ===0){
break;
}
}
//1
//2
//3
- continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环
var i=1;
for(;i<10;i++){
if(i % 2 ===0){
continue;//当i为偶数时回到终止打印操作并回到循环头部
}
console.log(i);
}
//1
//3
//5
//7
//9
标签
- Js中标签经常与break以及continue配合使用用来跳出特定的循环
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i===1&&j===1){break;}
console.log(i+","+j);
}
}
// 0,0
// 0,1
// 0,2
// 1,0
// 2,0
// 2,1
// 2,2
上面这个双重循环的例子里,不引用标签的话break只会跳出当前i=1的小循环
引入标签top以后
top:
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i===1&&j===1){break top;}
console.log(i+","+j);
}
}
// 0,0
// 0,1
// 0,2
// 1,0
会直接跳出整个大循环回到标签的位置
让我们再来看看continue的例子
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i===1&&j===1){continue;}
console.log(i+","+j);
}
}
// 0,0
// 0,1
// 0,2
// 1,0
// 1,2
// 2,0
// 2,1
// 2,2
当使用top标签以后
top:
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i===1&&j===1){continue top;}
console.log(i+","+j);
}
}
// 0,0
// 0,1
// 0,2
// 1,0
// 2,0
// 2,1
// 2,2
浙公网安备 33010602011771号