JavaScript语言基础(五)

六、JavaScript语句

(一)、if语句

语法: if (condition) statement1 else statement2 或连续多个if语句
if (condition1) statement1 else if (condition2) statement2 else statement3

条件(condition)任何表达式,并且求值结果不一定是布尔值。ECMAScript 会自
动调用 Boolean()函数将这个表达式的值转换为布尔值。如果条件求值为 true,则执行语句
statement1;如果条件求值为 false,则执行语句 statement2。

if (i > 25) 
 console.log("Greater than 25."); // 只有一行代码的语句
else { 
 console.log("Less than or equal to 25."); // 一个语句块
}

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."); 
}

(二)、do-while语句

do-while 语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。(循环体内的代码至少执行一次。)
语法:
do {
statement
} while (expression);

let i = 0; 
do { 
 i += 2; 
} while (i < 10);

(三)、while语句

while 语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。(while 循
环体内的代码有可能不会执行)
语法:
while(expression) statement

let i = 0; 
while (i < 10) { 
 i += 2; 
}

(四)、for语句

for 语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式。
语法: for (initialization; expression; post-loop-expression) statement
注意:初始化、条件表达式和循环后表达式都不是必需的。

let count = 10; 
for (let i = 0; i < count; i++) { 
 console.log(i); 
}

//无限循环(死循环)
for (;;) { // 无穷循环
 doSomething(); 
}

(五)、for-in语句

for-in 语句是一种严格的迭代语句,用于枚举对象中的非符号键属性。
语法: for (property in expression) statement
注意: ECMAScript 中对象的属性是无序的,因此 for-in 语句不能保证返回对象属性的顺序。如果 for-in 循环要迭代的变量是 null 或 undefined,则不执行循环体。

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

(六)、for-of语句

for-of 语句是一种严格的迭代语句,用于遍历可迭代对象的元素。
语法: for (property of expression) statement
注意: 与 for 循环一样,这里控制语句中的 const 也不是必需的。for-of 循环会按照可迭代对象的 next()方法产生值的顺序迭代元素。ES2018 对 for-of 语句进行了扩展,增加了 for-await-of 循环,以支持生成期约(promise)的异步可迭代对象。

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

(七)、标签语句

标签语句用于给语句加标签。
语法: label: statement

start: for (let i = 0; i < count; i++) { 
 console.log(i); 
}
//start 是一个标签,可以在后面通过 break 或 continue 语句引用。
//标签语句的典型应用场景是嵌套循环。

(八)、break 和 continue 语句

break 和 continue 语句为执行循环代码提供了更严格的控制手段。break 语句用于立即退
出循环,强制执行循环后的下一条语句句。而 continue 语句也用于立即退出循环,但会再次从循环顶部开始执行。

//break
let num = 0; 
for (let i = 1; i < 10; i++) { 
 if (i % 5 == 0) { 
 break; 
 }
 num++; 
} 
console.log(num); // 4 循环执行了 4 次,
//continue
let num1 = 0; 
for (let i = 1; i < 10; i++) { 
 if (i % 5 == 0) { 
 continue; 
 } 
 num1 ++; 
} 
console.log(num1 ); // 8 循环被完整执行了 8 次。
//嵌套循环break
let num2= 0; 
outermost: 
for (let i = 0; i < 10; i++) { 
 for (let j = 0; j < 10; j++) { 
 if (i == 5 && j == 5) { 
 break outermost; 
 } 
 num2++; 
 } 
} 
console.log(num2); // 55
//嵌套循环 continue
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

(九)、with语句

with 语句的用途是将代码作用域设置为特定的对象。
语法: with (expression) statement;
主要场景是针对一个对象反复操作,将代码作用域设置为该对象能提供便利。
注意: with 语句影响性能且难于调试其中的代码,不推荐在产品代码中使用 with语句。

let qs = location.search.substring(1); 
let hostName = location.hostname; 
let url = location.href; 
//上面代码中的每一行都用到了 location 对象。如果使用 with 语句,就可以少写一些代码:
with(location) { 
 let qs = search.substring(1); 
 let hostName = hostname; 
 let url = href; 
} 

(十)、swich语句

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 语句在比较每个条件的值时会使用全等操作符,因此不会强制转换数据类型

switch (i) { 
 case 25: 
 console.log("25"); 
 break; 
 case 35: 
 console.log("35"); 
 break; 
 case 45: 
 console.log("45"); 
 break; 
 default: 
 console.log("Other"); 
}
//效果同上
if (i == 25) { 
 console.log("25"); 
} else if (i == 35) { 
 console.log("35"); 
} else if (i == 45) { 
 console.log("45"); 
} else { 
 console.log("Other"); 
}

七、函数

ECMAScript 中的函数使用 function 关键字声明,后跟一组参数,然后是函数体。
语法:
function functionName(arg0, arg1,…,argN) {
statements
}

通过函数名来调用函数,函数的参数放在括号里(如果有多个参数,则用逗号隔开)
function sayHi(name, message) { 
 console.log("Hello " + name + ", " + message); 
}
sayHi("Nicholas", "how are you today?");

ECMAScript 中的函数不需要指定是否返回值。任何函数在任何时间都可以使用 return 语句来返回函数的值,用法是后跟要返回的值。不指定返回值的函数实际上会返回特殊值 undefined。

function sum(num1, num2) { 
 return num1 + num2; 
}
const result = sum(5, 10);

只要碰到 return 语句,函数就会立即停止执行并退出。return 语句后面的代码不会被执行。

function sum(num1, num2) { 
 return num1 + num2; 
 console.log("Hello world"); // 不会执行
}

一个函数里也可以有多个 return 语句。

function diff(num1, num2) { 
 if (num1 < num2) { 
 return num2 - num1; 
 } else { 
 return num1 - num2; 
 } 
}

严格模式对函数也有一些限制:

  1. 函数不能以 eval 或 arguments 作为名称;
  2. 函数的参数不能叫 eval 或 arguments;
  3. 两个命名参数不能拥有同一个名称。
    如果违反上述规则,则会导致语法错误,代码也不会执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值