有时,你需要当符合某种特定条件的时候再运行你的代码。你可以通过流程控制语句if-else,来让代码在符合某种条件的时候运行。
Example 2.13. 流程控制
var foo = true;
var bar = false;
if (bar) {
// 这里的代码将不会运行。
console.log('hello!');
}
if (bar) {
// 这里的代码不会运行。
} else {
if (foo) {
// 这里的代码会运行
} else {
// 如果foo和bar都为false,则这里的代码会被运行。
}
}
虽然当if语句后面只跟有一行代码时,该代码不加括号也是可以运行的。但是为了代码可读性,代码前后通常也加上括号
请注意,不要在if/esle代码段中多次定义同一个函数,这会引起意想不到的结果
为了熟练的使用流程控制语句,我们必须要知道在变量值中哪些类型的值会被判定为真,哪些类型的值会被判定为假,有时看起来像是假的值却被判定为真
Example 2.14. 被判断义为 true的值
'0'; //字符串0。
'any string';//任意字符串。
[]; // 一个空数组。
{}; // 一个空对象。
1; // 不为0的数。
Example 2.15. 被判定为false的值
0; ''; // 一个空串。 NaN; // JavaScript中的 "not-a-number"(NaN是一个不确定的数)。 null; undefined; // 注意 -- undefined 可以被重新定义!
有时你想要根据某些条件给一个变量赋值,你可以使用 if/else 语句,
但是使用三元运算符会更有效率 [Definition:
三元运算符 通过判定条件,如果条件为真返回第一个值
如果条件为假,返回第二个值]
三元运算符不一定必须要把返回值赋值给变量。
比起写一连串的if/else。我们有时可以使用switch语句来代替。 [Definition: Switch 分支语句 分支语句根据一个 变量或者表达式的值,来运行不同的代码段。]
Example 2.17. 一个switch分支语句
switch (foo) {
case 'bar':
alert('the value was bar -- yay!');
break;
case 'baz':
alert('boo baz :(');
break;
default:
alert('everything else is just ok');
break;
}
Switch语句在JavaScript中并不是经常被人们用到,通常人们可以通过创建 一个对象来更好的完成这项工作,下面就是一个例子。
var stuffToDo = {
'bar' : function() {
alert('the value was bar -- yay!');
},
'baz' : function() {
alert('boo baz :(');
},
'default' : function() {
alert('everything else is just ok');
}
};
if (stuffToDo[foo]) {
stuffToDo[foo]();
} else {
stuffToDo['default']();
}
我们在以后的章节来了解对象。
Copyright Rebecca Murphey, released under the Creative Commons Attribution-Share Alike 3.0 United States license.