JS高程-3-3:语句与函数

文章为《JavaScript高级程序设计》(第三版)笔记。

本小节包括:

  • 1.if语句
  • 2.do-while语句
  • 3.while语句
  • 4.for语句
  • 5.for-in语句
  • 6.label语句
  • 7.break和continue语句
  • 8.with语句
  • 9.switch语句
  • 10.函数

1.if 语句

2.do-while 语句

是一种后测试循环语句。在对条件表达式求值之前,循环体内的代码至少会被执行一次。

do {

  statement

} while (expression)

3.while 语句

属于前测试循环语句。

4.for 语句

前测试循环语句。

5.for-in 语句

可以用来枚举对象。通过for-in循环输出的属性名的顺序是不可预测的,返回的先后次序可能会因为浏览器而异。

注意:如果要迭代的对象的变量值为null或undefined,for-in语句会抛出错误。ES5更正了这一行为,对这种情况不在抛出错误,而只是不执行循环体。为了保证最大限度的兼容性,建议在使用for-in循环之前,先检测确认该对象的值是不是nulll或undefined

6.label 语句

使用label语句可以在代码中添加标签,以便将来使用。

label: statement

例子:

start: for (var i = 0; i < count; i++) {
  alert(i)
}

例子中定义的 start 标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用。 

7.break 和 continue 语句

break我们都知道是用来退出循环,而continue语句虽然也是退出循环,但退出循环后会从循环的顶部继续执行。

for (var i=1; i<10; i++) {
  if (i % 5 === 0) {
    continue;
  }
  num++;
}
alert(num); // 8

如果这里是break的话,输出的值应该是4。这里输出的是8,是因为当i为5时,跳出了本次循环,也就不执行num++,而是开始执行i等于6的循环。

break和continue语句都可以与label语句联合使用。这种联合使用的情况多发生在循环嵌套的情况下

var num = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i === 5 && j === 5) {
      break outermost;
    }
    num++;
  }
}
alert(num); // 55

添加这个标签的结果将导致break语句不仅会退出内部的for语句(即使用变量j的循环),而且也会退出外部的for语句(即使用变量i的循环)。如果这里用的是continue语句的话,则会退出内部循环,执行外部循环。

8.with 语句

利用with语句可以简化多次编写同一个对象的工作。

var hostName = location.hostname;
var url = location.href;

使用with语句改写

with(location) {
  var hostName = hostname;
  var url = href;
}

注意,严格模式下不许使用with语句,而且有一定的性能问题。

9.switch 语句

switch也是我们常用的一个语句。switch语句在比较时使用的是全等操作符,因此不会发生类型转换。

这里有个有趣的例子:

var num = 25;
switch (true) {
  case num < 0:
    alert('Less than 0.');
    break;
  case num >= 0 && num <= 10:
    alert('Between 0 and 10.');
    break;
  case num > 10 && num <= 20:
    alert('Between 10 and 20.');
    break;
  default:
    alert('More than 20.');
}

最终结果为 “More than 20.”。这里之所以可以给 switch 语句传递表达式 true ,是因为每个 case 值都可以返回一个布尔值。

10.函数

ECMAScript 函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。

在函数体内可以通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。

注意,arguments 对象只是与数组类似(它并不是 Array 的实例)

function sayHi() {
  console.log('Hello ' + arguments[0] + ', length:' + arguments.length);
}
sayHi('a', 'b') // Hello a, length:2

猜你喜欢

转载自blog.csdn.net/qq_39025670/article/details/104979291
3-3