一. JS条件
-
if ... else ...
-
switch
二. JS循环
-
for
-
for/in
-
while
-
do/while
三. break、continue语句
null、undefined、0、NaN 和 “” 视为 false,其他值一概视为 true。
一. JS条件
-
if
- 只有当指定条件为 true 时,使用该语句来执行代码 -
if...else
- 当条件为 true 时执行代码,当条件为 false 时执行其他代码 -
if...else if....else
- 使用该语句来选择多个代码块之一来执行
if(条件1){ // JS 会自动将条件表达式转换为布尔值
执行语句1
}else if(条件2){
执行语句2
}else{
执行语句3
}
// 条件1 和 条件2 不能有交集。
-
switch
- 使用该语句来选择多个代码块之一来执行 -
当有很多种选项等于…的时候,
switch
比if else
使用更方便:
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
// switch 语句再比较值时使用的时全等操作符,因此不会发生类型转换。
二. JS循环
-
for
- 循环代码块一定的次数 -
for/in
- 循环遍历对象的属性 -
while
- 当指定的条件为 true 时循环指定的代码块 -
do/while
- 同样当指定的条件为 true 时循环指定的代码块
1. for循环
循环结构的执行步骤:
1、声明循环变量;
2、判断循环条件;
3、执行循环体操作;
4、更新循环变量;
5、然后循环执行2-4,直到条件不成立,跳出循环。
// 10的阶乘
var x = 1;
for(var i = 1; i <= 10; i++){
x *= i;
}
console.log(x);
//3628800
if(x===3628800){
console.log('1 * 2 * 3 * .... *10 = ' + x);
}else{
console.log("计算错误");
}
//1 * 2 * 3 * .... *10 = 3628800
2. for/in循环 : 循环遍历对象的每个属性
-
for-in
语句是一种精准的迭代语句,可以用来枚举对象的属性 -
语法:
for (property in expression) statement
-
JS 对象的属性没有顺序。因此,通过
for-in
循环输出的属性名的顺序是不可预测的。顺序差别因浏览器而异 -
如果表示要迭代的对象的变量值为
null
或undefined
,for-in
语句会抛出错误。ECMAScript5 对这种情况不抛出错误,而是不执行循环体。 -
为了保证最大限度的兼容性,建议在使用
for-in
循环之前,先确认该对象的值不是null
或undefined
var o ={
name:'Jack',
age: 20,
city: 'Beijing'
};
for(var key in o){
console.log(key);
} // 'name','age','city'
// 使用for-in循环o对象的所有属性。
// 每次执行循环时,都会将o对象中存在的一个属性名赋值给变量key
// 这个过程会一直持续到对象中的所有属性都枚举一遍为止
- 由于
Array
也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in
循环可以直接循环出Array
的索引:
var a = ['A','B','C'];
for(var i in a){
console.log(i);
//'0','1','2'
console.log(a[i]);
//'A','B','C'
}
3. while循环
-
while
语句属于前测试循环语句 -
在循环体内的代码被执行之前,就会对出口条件求值
-
while
循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环 -
循环体内的代码有可能永远不会被执行
-
语法:
while (expression) statement
-
for 循环在已知循环的初始和结束条件时非常有用。而忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。
// 计算100以内所有奇数之和,可以用while循环实现
var x =0;
var n =99;
while(n>0){
x = x+n;
n = n-2;
}
x;
//2500
//在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出
4. Do…while循环 (没什么用)
-
do-while
语句是一种后测试循环语句,即只有在循环体中的代码块执行之后,才会测试出口条件 -
在对条件表达式求值之前,循环体内的代码至少会被执行一次
-
先执行代码,后判断条件,如果条件为真,继续循环。
num= 1;
do
{
console.log("数值为:" + num);
num++; //更新条件
}
while (num<=5)
//数值为:1
//数值为:2
//数值为:3
//数值为:4
//数值为:5
三. break、continue语句
-
break
和continue
语句用于在循环中精确地控制代码的执行 -
break
语句会立即退出循环,作用是跳出代码块, 所以break
可以使用于循环和 switch 等 -
continue
的作用是进入下一个迭代, 所以continue
只能用于循环的代码块 -
break
和continue
语句都可以与 label 语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套额情况下 -
虽然连用
break
、continue
和 label 语句能执行复杂的操作,但如果不使用过度,也会有问题 -
建议如果使用 label 语句,一定要使用描述性的标签,同时不要嵌套过多的循环
for(var i = 0; i < 100; i++){
if(i % 7 == 0 || i % 10 == 7){
continue; // 终止本次循环,进入下一个循环
}
console.log(i);
}
// i = 0;符合 if 判断条件,进入 if 执行 continue 终止本次循环,它就不会再往下进行,直接进入下一个循环
// i = 1;不符合 if 判断条件,直接跳过 if 执行 console.log(i)。
四. 其它
start: for(var i=0;i<count;i++){
alert(i);
}
//例子中定义的start标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用
-
with
语句-
with 语句的作用是将代码的作用域设置到一个特定的对象中
-
语法:
with (expression) statement
-
定义 with 语句的目的主要是为了简化多次编写同一个对象的工作
-
严格模式下不循序使用 with 语句,否则将视为语法错误
-
var qs=location.search.substring(1);
var hostNmae=location.hostname;
var url=location.href;
with(location){
var qs=search.substring(1);
var hostNmae=hostname;
var url=href;
}
//使用with语句关联了location对象。在with语句的代码块内部,每个变量首先被认为是一个局部变量,如果在局部变量的内部找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名的属性,则以location对象属性的值作为变量的值