语句通常使用一或多个关键字完成既定的任务。语句可以简单,也可以复杂。简单的如告诉函数退出,复杂的如列出一堆要重复执行的指令。主要介绍这些常用语句
- if 语句:
if (condition) statement1 else statement2
这里的(condition)可以是任何表达式,求值结果不一定是布尔值。原理是:ECMAScript 会自动调用 Boolean()函数将这个表达式的值转换为布尔值。如果条件求值为 true,则执行语句statement1;如果条件求值为 false,则执行语句 statement2。可以使用多个if语句
if (i > 25) {
console.log("Greater than 25.");
} else if (i < 0) {
console.log("Less than 0.");
} else {
console.log("Between 0 and 25, inclusive.");
}
过多个if语句可以造成效率,可以用switch 语句来替换,这样执行效率更高
- switch 语句:
switch (expression) {
case value1:
statement
break;
case value2:
statement
break;
case value3:
statement
break;
case value4:
statement
break;
default:
statement
}
这里的每个 case(条件/分支)相当于:“如果表达式等于后面的值,则执行下面的语句。”break关键字会导致代码执行跳出 switch 语句。如果没有 break,则代码会继续匹配下一个条件。default关键字用于在任何条件都没有满足时指定默认执行的语句(相当于 else 语句)。
注意事项:switch 语句在比较每个条件的值时会使用全等操作符,因此不会强制转换数据类型(比如,字符串"10"不等于数值 10)。
3. while 语句:
while(expression) statement
只要(expression)条件成立就会执行statement
4. do-while 语句:
do {
statement
} while (expression);
先在statement里执行一次,再在(expression)判断一下是否继续循环
5. for 语句
for (initialization; expression; post-loop-expression) statement
initialization是初始化值,expression是表达式判断是否继续循环的条件,post-loop-expression是继续循环后值该怎么变化递增还是递减,statement是进入循环执行程序。推荐使用let 声明迭代器变量,这样就可以将这个变量的作用域限定在循环中。
6. for-in 语句
for (property in expression) statement
expression相当于一个对象,property 相对于对象中的对象属性,对象把所有对象属性都被枚举一边,为了确保这个局部变量不被修改,推荐使用 const。如果 for-in 循环要迭代的变量是 null 或 undefined,则不执行循环体。
7. for-of 语句
for (property of expression) statement
expression相当于一个集合,property 相当于集合中的一个元素,集合把所有元素都所有元素都迭代完。为了确保这个局部变量不被修改,推荐使用 const。
8. for-await-of 语句
for await (property of expression) statement
只适用于异步可迭代,expression相当于一个集合,property 相当于集合中的一个元素,集合把所有元素都所有元素都迭代完。为了确保这个局部变量不被修改,推荐使用 const。
9. 标签语句
label: statement
label相当于给statement打上一个标签,可以在后面通过 break 或 continue 语句引用。标签语句的典型应用场景是嵌套循环。
10. break 和 continue 语句
break 和 continue 语句为执行循环代码提供了更严格的控制手段。break 语句用于立即退出循环,强制执行循环后的下一条语句。而 continue 语句也用于立即退出循环,但会再次从循环顶部开始执行。这些尽量不要嵌入循环太深。容易出错
11. ”with 语句“
with (expression) statement;
expression相当于一个对象,在statement操作对象中的属性,不用通过对象获取属性,只要写下他的属性默认都是在这个对象中,就是将代码作用域设置为特定的对象
// 未使用with
let hostName = location.hostname;
let url = location.href;
// 使用with
with(location) {
let hostName = hostname;
let url = href;
}
函数
函数就是Java中的方法,和Java方法有区别的是函数在任何地方、任何时间执行。函数使用function 关键字声明。函数不需要指定是否返回值。任何函数在任何时间都可以使用 return 语句来返回函数的值,用法是后跟要返回的值。对函数一些限制:
- 函数不能以 eval 或 arguments 作为名称;
- 函数的参数不能叫 eval 或 arguments;
- 两个命名参数不能拥有同一个名称。