000004 - JavaScript语言基础(四)
1、语句
1.1、if语句
if语句是使用最频繁的语句之一,语法如下:
if (condition) statement1 else statement2
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.");
}
1.2、do-while语句
do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。换句话说,循环体内的代码至少执行一次。do-while的语法如下:
do {statement
} while (expression);
let i = 0;
do {i += 2;
} while (i < 10);
1.3、while语句
while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。因此,while循环体内的代码有可能不会执行。下面是while循环的语法:
while(expression) statement
let i = 0;
while (i < 10) {
i += 2;
}
1.4、for语句
for语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式,语法如下:
for (initialization; expression; post-loop-expression) statement
let count = 10;
for (let i = 0; i < count; i++) {
console.log(i);
}
for (;;) { // 无穷循环
doSomething();
}
1.5、for-in语句
for-in语句是一种严格的迭代语句,用于枚举对象中的非符号键属性,语法如下
for (property in expression) statement
for (const propName in window) {
document.write(propName);
}
这个例子使用for-in循环显示了BOM对象window的所有属性。每次执行循环,都会给变量propName赋予一个window对象的属性作为值,直到window的所有属性都被枚举一遍。与for循环一样,这里控制语句中 的const也不是必需的。但为了确保这个局部变量不被修改,推荐使用const。
所有可枚举的属性都会返回一次,但返回的顺序可能会因浏览器而异。
如果for-in循环要迭代的变量是null或undefined,则不执行循环体。
1.6、for-of语句
for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素,语法如下:
for (property of expression) statement
for (const el of [2,4,6,8]) {
document.write(el);
}
我们使用for-of语句显示了一个包含4个元素的数组中的所有元素。循环会一直持续到将所有元素都迭代完。与for循环一样,这里控制语句中的const也不是必需的。但为了确保这个局部变量不被修改,推荐使用const。
for-of循环会按照可迭代对象的next()方法产生值的顺序迭代元素
1.7、标签语句
标签语句用于给语句加标签,语法如下:
label: statement
start: for (let i = 0; i < count; i++) {
console.log(i);
}
在这个例子中,start是一个标签,可以在后面通过break或continue语句引用。标签语句的典型应用场景是嵌套循环。
1.8、break和continue语句
break和continue语句为执行循环代码提供了更严格的控制手段。其中,break语句用于立即退出循环,强制执行循环后的下一条语句。而continue语句也用于立即退出循环,但会再次从循环顶部开始执行。下面看一个例子:
let num = 0;
for (let i = 1; i < 10; i++) {
if (i % 5 == 0) {
break;
}num++;
}console.log(num); // 4
break和continue都可以与标签语句一起使用,返回代码中特定的位置。这通常是在嵌套循环中,如下面的例子所示:
let num = 0;
outermost: for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
console.log(num); // 55
let num = 0;
outermost:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue outermost;
}num++;
}
}
console.log(num); // 95
1.9、with语句
with语句的用途是将代码作用域设置为特定的对象,其语法是:
with (expression) statement;
使用with语句的主要场景是针对一个对象反复操作,这时候将代码作用域设置为该对象能提供便利
let qs = location.search.substring(1);
let hostName = location.hostname;
let url = location.href;
with(location) {
let qs = search.substring(1);
let hostName = hostname;
let url = href;
}
这里,with语句用于连接location对象。这意味着在这个语句内部,每个变量首先会被认为是一个局部变量。如果没有找到该局部变量,则会 搜索location对象,看它是否有一个同名的属性。如果有,则该变量会被求值为location对象的属性。
1.10、switch语句
switch语句是与if语句紧密相关的一种流控制语句,从其他语言借鉴而来
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语句可以用于所有数据类型,因此可以使用字符串甚至对象。其次,条件的值不需要是常量,也可以是变量或表达式.
2、函数
以下是函数的基本语法:
function functionName(arg0, arg1,...,argN) {
statements
}
ECMAScript中的函数不需要指定是否返回值。任何函数在任何时间都可以使用return语句来返回函数的值,用法是后跟要返回的值。只要碰到return语句,函数就会立即停止执行并退出。因此,return语句后面的代码不会被执行。return语句也可以不带返回值。这时候,函数会立即停止执行并返回undefined。
function sum(num1, num2) {
return num1 + num2;
}