《JavaScript高级程序设计(第3版)》第三章总结三

本文是《JavaScript高级程序设计(第3版)》第三章的总结,涵盖for-in、with及switch语句的详细说明,强调了for-in循环的属性枚举顺序不可预测性,with语句在严格模式下的禁用,以及switch语句的灵活使用。此外,还介绍了函数的特性,包括函数参数的灵活性、严格模式下的限制以及arguments对象的用途。

四、语句

4.1、for-in语句

for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。语法如下所示:

for (property in expression) statement

// Example
// 每执行一次循环,都会将window对象中的属性名赋值给propName,直到window对象中的所有属性都被枚举一遍为止。
for (var propName in window) {
    document.write(propName+'<br>');
}

注意:ES 对象的属性没有顺序。因此,通过 for-in 循环输出的属性名的顺序是不可预测的。具体来讲,所有属性都会被返回一次,但返回后的先后顺序可能会因浏览器而异。

在 ES5 中,当要迭代的对象的变量值为 null 或 undefined 时,for-in 语句不会再抛出错误,只是不会执行循环体。

4.2、with语句

with语句的作用是将代码的作用域设置到一个特定的对象中。

// example
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;

// 使用with语句进行转换如下
// 在with语句的代码块内部,每个变量首先被认为值一个局部变量,
// 而如果在局部变量环境中找不到该变量的定义,
// 就会查询location对象中是否有同名的属性。
with(location) {
    var qs = search.substring(1);
    var hostName = hostname;
    var url = href;
}

严格模式下不允许使用 with 语句,否者将视为语法错误。

4.3、switch语句

注意:switch语句中可以使用任何数据类型,无论是字符串,还是对象都没有问题。其次,每个case的值不一定是常量,可以是变量,甚至是表达式。

注意:switch语句在比较值时使用的都是全等操作符。

五、函数

如果return语句不带任何返回值,则函数停止执行将返回undefined值。

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

  • 不能把函数名或参数名命名为 eval 或 arguments;
  • 不能出现两个命名参数同名的情况。

5.1、理解函数参数

(1)ES函数不介意传递的参数个数和类型,即便定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。

(2)arguments 对象只是与数组类似,可以使用方括号访问它的每一个元素,并使用 length 属性来确定参数的个数。

(3)arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。

 

参考文献

[1] 《JavaScript高级程序设计(第3版)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值