JavaScript(五)

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

for (property in expression) statement

eg: 

for(var propName in window) {

  document.write(propName);

}

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

为保证最大程度的兼容性,建议在for-in循环之前,先检测确认该对象的值不是null或undefined。

label语句:可以在语句中添加标签

label: statement

break和continue语句:

break语句会立即退出循环,强制继续执行循环后面的语句。而continue语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。

with语句:

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

with(expression) statement;


在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。

switch语句:

switch(expression) {

  case value: statement

     break;

  case value: statement

     break;

  case value: statement

     break;

  default: statement

}

通过为每个case后面都添加一个break语句,就可以避免同时执行多个case代码的情况。假如确实需要混合几种情形,不要忘了在代码中添加注释,说明你是有意省略了break关键字。

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

switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串“10”不等于数值10)。

函数

function functionName(arg0, arg1, ..., argN) {

  statements

}

ECMAScript中的函数在定义是不必指定是否返回值。实际上,任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值。

函数会在执行完return语句之后停止并立即退出。因此,位于return语句之后的代码都永远不会执行。

return语句也可以不带有任何返回值。在这种情况下,函数在停止执行后将返回undefined值。这种用法一般用在需要提前停止函数执行而又不需要返回值的情况下。

理解参数:

ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。ECMAScript中的参数在内部是用一个数组来表示的。在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。

命名的参数只提供便利,但不是必需的。

arguments对象可以与命名参数一起使用。

arguments的值永远与对应命名参数的值保持同步。

arguments的值和参数的内存空间是独立的,但它们的值会同步,但这种影响是单向的,修改命名参数不会改变arguments中对应的值。另外还要记住,如果只传入了一个参数,那么为arguments[1]设置的值不会反映到命名参数中。这是因为arguments对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。没有传递值的命名参数将自动被赋予undefined值。这就跟定义了变量但又没有初始化一样。

没有重载:

如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。

评论

© 完全感觉Dreamer | Powered by LOFTER