function convert(x) {
switch (typeof x) {
case 'number': //将数字转换为16进制
return x.toString(16);
case 'string':
return '"' + x + '"'; //返回两段带双引号的字符串。
default: //使用普通方法转换其它类型
return String(x);
}
}
console.log(convert(100255114)) //=>5f9c58a
注意,在上面的两个例子中,case关键字后跟随的是数字和字符串直接量,在实际中这是switch最常见的用法,但是ECMAScript标准允许每个关键字跟随任意的表达式。
switch语句首先计算switch 关键字后的表达式,然后按照从上到下的顺序计算每个case后的表达式,知道执行到case的表达式的值和switch的表达式的值相等时为止。由于对每个case的匹配操作实际上是“===”恒等运算符比较,而不是“==”,因此表达式和case的匹配并不会做任何类型转换。
每次执行switch语句的时候,并不是所有的case表达式都能执行到,因此,应当避免带有副作用的case表达式,比如函数调用的表达式和赋值表达式。最安全的做法就是在case表达式中使用常量表达式。
前面提到过,switch表达式与所有的case表达式都不匹配,则执行标记为“default:”的语句块,如果没有"default:"标签,则switch整个语句都跳过。在之前的例子中,“default:”标签都出现在switch末尾,位于所有case标签之后,当然这是最合理也是最常用的写法。实际上,“default:”标签可以放在switch语句内任何地方。
5.循环。
为了理解条件语句,可以将javascript中的代码想成一条条分支路径。循环语句(looping statement)就是程序路径的一个回路,可以让一部分代码重复执行。javascript中有四种循环语句:while、do/while、for、for/in下面几节会一次讲解他们。其中最常用的循环就是数组元素的遍历,(7.6会详细讨论这种循环和使用数组类定义的特殊循环方法。)
i.while
if语句是一种基本的控制语句,用来选择执行程序的分支语句。和if一样,while语句也是一个基本的循环语句,它的语法如下:
复制代码 代码如下:
while (expression)
statement
在执行while语句之前,javascript解释器首先计算expression的值,如果它的值是假值,那么程序将跳过循环体中的逻辑statement转而执行程序中的下一条语句。如果它的值是真值,则执行循环体statement内的逻辑,然后再计算表达式expression的值,种循环会一直持续下去,知道expression的值为假值为止。换一种说法 就是表达式为expression是真值的时候则循环执行statement,注意,使用while(true)则会创建一个死循环。
通常来说,我们不想让javascript反复执行同一操作。在几乎每一次循环中,都会有一个或多个变量随着循环而迭代改变。正是由于改变了变量这些变量,因此每次循环执行的statement的操作也不尽相同,而且,如果改变变量在expression中用到,那么每次循环表达式的值也不同。这一点非常重要,负责初始值为真值的表达式永远是真值,循环也不会结束,下面的这个示例所示while循环输出0-9值。
复制代码 代码如下:
var count = 0;
while (count < 10) {
console.log(count);
count++;
}