条件判断
语法:if(条件){..为真执行语句..} else{..非真执行语句..}
var age = 20;
if (age >= 18) { // 如果age >= 18为true,则执行if语句块
alert('adult');
} else { // 否则执行else语句块
alert('teenager');
}
如果执行语句只有一句,其实是可以省略
{}
的,但是这种写法容易造成,在后期想要添加语句的时候,添加却忘记使用{}
,造成语义歧义。
var age = 20;
if (age >= 18)
alert('adult');
else
console.log('age < 18'); // 添加一行日志
alert('teenager'); // <- 这行语句已经不在else的控制范围了
建议永远写上{}
多选择判断语法:if(){....} else if(){....} else{....}
var age = 13;
if (age>=6&&age<18){
alert('teenager');
}
else if (age>18){
alert('adult');
}
else{
alert('kid');
}
js中的布尔值判定:
javascript中把null、undefined、0、NaN和空字符串''视为false,其他均为true
循环
for循环结构
语法:
var x =0;
var i;
for (i = 1; i<=1000; i++){ //初始条件;判断条件;递增条件
x = x+i;
}
for循环最常用的地方是利用索引来遍历数组:
var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
x = arr[i];
console.log(x);
}
以上代码会依次打印arr中的三个元素。
for循环的三个条件其实都是可以省略的
for(;;){}
,但是要在执行语句中添加一个break
否则就是死循环。其中break可以添加在条件判断语句中。
var x = 0;
for (;;) { // 将无限循环下去
if (x > 100) {
break; // 通过if判断来退出循环
}
x ++;
}
for...in
for循环的一个变体就是for ... in
循环,可以把一个对象的所有属性依次循环出来:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
alert(key); // 'name', 'age', 'city'
}
要过滤掉对象继承的属性,用hasOwnProperty()
来实现:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
alert(key); // 'name', 'age', 'city'
}
}
注意,
for.. in
对Array
的循环得到的是str类型,而不是number。
while循环结构
语法:
while(条件){
执行语句;
}
do...while结构
最后一种循环是do { ... } while()
循环,它和while
循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:
var n = 0;
do {
n = n + 1;
}
while (n < 100);
n; // 100
用do { ... } while()
循环要小心,循环体会至少执行1次,而for
和while
循环则可能一次都不执行。
switch语句
语法:
switch(n) //一个变量,用于选择case代码块
{
case 1:
执行代码块 1
break; //用于阻止代码向向下一代码块运行
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}
case
后面只能跟数字吗?
var inp1= 'this';
var inp2='then';
var inp3 = 'that';
var inp4 = 'the';
var x = inp1;
switch (x){
case inp1:
console.log(x);
break;
case inp2:
console.log(x);
break;
case inp3:
console.log(x);
break;
case inp4:
console.log(x);
break;
default:
console.log('no!');
break;
}
由上面的例子可以看出,case
后面跟的是一个变量。通过变量的名称选择case执行的代码块