语句

ECMA-262描述了一些语句(流控制语句)。

类C语言语句

正如大多数语言一样,JavaScript也是一门类C语言。

它和C语言一样拥有以下语句:

  • if语句
  • while语句
  • do-while语句
  • for语句
  • switch语句

上述用法和类C语言几乎完全一样,下面介绍几个特别的语句:

for-in语句

for-in语句是一种严格的迭代语句,枚举对象中非符号键的属性:

1
for (property in expression)	statement

例子:

1
2
3
for (const propName in window){
document.write(propName);
}

for-of语句

for-of语句是一种严格的迭代语句,遍历可迭代对象的元素:

1
for (property of expression)	statement

例子:

1
2
3
for (const e1 of [2, 4, 6, 8]){
document.write(e1);
}

标签语句

标签语句用于给语句加标签:

1
label: statement

例子:

1
2
3
start: for (let i = 0; i < count; i++){
console.log(i);
}

start标签标记了这个位置,能够被break和continue使用。

标签语句典型的应用场景是嵌套循环。标签会使逻辑关系复杂,不推荐使用。

break和continue

break和continue都可以和标签语句一起使用。

1
2
break label; 	//结束标签对应的循环
continue label; //继续下一次标签对应的循环

with语句

with语句将代码作用域设置为特定的对象。

1
with (expression)	statement;

例子:

1
2
3
4
5
6
7
8
9
10
11
let qs = location.search.substring(1);
let hostName = location.hostName;
let url = location.href;

//使用with语句进行简化:

with (location){
let qs = search.substring(1);
let hostName = hostName;
let url = href;
}

严格模式下不允许使用with语句,因为with语句会使代码复杂并且影响性能,不推荐使用。

函数

函数可以封装语句,在任何地方执行。

这里简单的介绍函数用法,后续会详细说明。

ECMAScript中的函数使用function关键字声明。

1
2
3
function functionName(arg0, arg1, ..., argn){
statement
}

例子:

1
2
3
function sayHi(name, message){
console.log("Hello " + name + ", " + message);
}

ECMAScript中函数不需要指明返回值,任何时候都可以通过return语句返回内容。

不指定返回值的函数实际上会返回undefined。