有时,你需要当符合某种特定条件的时候再运行你的代码。你可以通过流程控制语句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.