也称为流控制语句
if 语句
if (condition) statement1 else statement2
会自动调用 Boolean()转换函数将condition这个表达式的结果转换为一个布尔值
do-while 语句
后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。
换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次
while 语句
前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值。
因此,循环体内的代码有可能永远不会被执行
for 语句
前测试循环语句,但它具有在执行循环之前初始化变量 和定义循环后要执行的代码 的能力。
for-in 语句
一种精准的迭代语句,可以用来枚举对象的属性
建议在使用 for-in 循环之前,先检测确认该对象的值不是 null 或 undefined
es5之前会抛错,es5之后不抛错,只是不执行
lable 语句
在代码中添加标签,以便将来使用
label: statement
break、continue 语句
在循环中精确地控制代码的执行
break语句 会立即退出循环,强制继续执行循环后面的语句。
continue语句 虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。
与 label 语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套的情况下
with 语句
将代码的作用域设置到一个特定的对象中
with (expression) statement;
switch 语句
与 if 语句的关系最为密切
可以在switch 语句中使用任何数据类型(在很多其他语言中只能使用数值),无论是字符串,还是对象都没有问题。
每个 case 的值不一定是常量,可以是变量,甚至是表达式
switch 语句在比较值时使用的是 全等 操作符,因此不会发生类型转换(例如,字符串"10"不等于数值 10) 。
函数
函数会在执行完 return 语句之后停止并立即退出。
因此,位于 return 语句之后的任何代码都永远不会执行
return 语句也可以不带有任何返回值。
在这种情况下,函数在停止执行后将返回 undefined 值。
命名的参数只提供便利,但不是必需的
ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。
因为ECMAScript 中的参数在内部是用一个类数组arguments来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数
arguments 对象可以与命名参数一起使用
arguments 的值永远与对应命名参数的值保持同步
例:修改了arguments[1],也就修改了 num2。
只是值同步,俩个数的内存空间是独立的
如果只传入了一个参数,那么为 arguments[1]设置的值不会反应到命名参数中
因为 arguments 对象的长度是由传入的参数个数决定的
没有传递值的命名参数将自动被赋予 undefined 值
没有重载, 会覆盖
通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿 方法的重载