if语句
if (condition) {statement1} else {statement2};
其中的 condition(条件)可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。
ECMAScript 会自动调用 Boolean()转换函数将这个表达式的结果转换为一个布尔值。如果对 condition
求值的结果是 true,则执行 statement1(语句 1),如果对 condition求值的结果是 false,则执行 statement2
(语句 2)。而且这两个语句既可以是一行代码,也可以是一个代码块(以一对花括号括起来的多行代码)。
do-while语句
do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。
换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。以下是 do-while 语句的
语法:
do {
statement
} while (expression);
tip:先执行任务在对比结果,这种后测试循环语句最常用于循环体中的代码至少要被执行一次的情形;
while语句
while 语句属于前测试循环语句,在循环体内的代码被执行之前,就会对出口条件求值。因此,循环体内的代码有可能永远不会被执行。
while(expression) {statement};
for语句
前测试循环语句,具有在执行循环之前初始化变量和定义循环后要执行的代
码的能力。
for (initialization; expression; post-loop-expression) {statement};
for-in语句
for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。
for (property in expression) {statement};
laber语句
使用 label 语句可以在代码中添加标签,以便将来使用。
通俗理解给代码块起了个名字;以便将来使用
label: {statement} ;
laber 标签可以在将来由 break 或 continue 语句引用
break和continue语句
break 语句会立即退出循环,强制继续执行循环后面的语句。
而 continue 语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行(单纯的跳过本次循环)
tip:但如果使用过度,也会给调试带来麻烦。在此,我们建议如果使用 label 语句,一定要使用描述性的标签,同时不要嵌套过多的循环
with语句
with 语句的作用是将代码的作用域设置到一个特定的对象中
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
//等价于
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
tip:严格模式下不允许使用 with 语句,否则将视为语法错误。
大量使用 with 语句会导致性能下降,同时也会给调试代码造成困难,因此
在开发大型应用程序时,不建议使用 with 语句。
switch语句
switch (expression) {
case value: statement
break;
case value: statement
break;
case value: statement
break;
case value: statement
break;
default: statement
}
switch 语句中的每一种情形(case)的含义是:“如果表达式等于这个值(value),则执行后面的
语句(statement)”。而 break 关键字会导致代码执行流跳出 switch 语句。如果省略 break 关键字,
就会导致执行完当前 case 后,继续执行下一个 case。最后的 default 关键字则用于在表达式不匹配前
面任何一种情形的时候,执行机动代码(因此,也相当于一个 else 语句)。
switch 语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,
字符串"10"不等于数值 10)
函数
ECMAScript 中的函数使用 function 关键字来声明,后跟一组参数以及函数体。
函数的基本语法如下所示:
function functionName(arg0, arg1,...,argN) {
statements
}
函数可以通过其函数名来调用,后面还要加上一对圆括号和参数(圆括号中的参数如果有多个,
可以用逗号隔开)。
函数在任何时候都可以通过return 语句后跟要返回的值来实现返回值
function sum(num1, num2) {
return num1 + num2;
}
个函数会在执行完 return 语句之后停止并立即退出,位于 return 语句之后的任何代码
都永远不会执行
function sum(num1, num2) {
return num1 + num2;
alert("Hello world"); // 永远不会执行
}
理解参数
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。
原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收
到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没有问题。实际上,在函数体内可以通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。