JS基本概念(4)

【6】语句

(1)if语句

if ( i > 25) {
alert("greater than 25");
}else if (i < 0) {
alert("less than 0");
}else{
alert("between 0 and 25");
}

(2)do-while语句:后测试循环

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

alert(i);

(3)while语句:前测试循环

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

(4)for语句:前测试循环

for(var i = 0;i<count;i++){
alert(i);
}
alert(i); //10
  • 使用while循环做不到的,使用for循环液同样做不到;
  • ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到;
  • for循环中的初始化表达式、控制表达式和循环后表达式都是可选的。将这三个表达式全部省略,就会创建一个无限循环。
  • 只给出控制表达式就把for循环转换成了while循环。

(5)for-in语句

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

for(var propName in window){
document.write(propName);
}
  • ECMAScript对象的属性没有顺序;
  • 如果表示要迭代的对象的变量值为null或undefined,for-in语句会抛出错误。

(6)label语句:在代码中添加标签,以便将来使用

label:statement

start:for(var i=0;i<count;i++){
alert(i);
};//定义的start标签可以在将来有由break或continue语句引用;加标签语句一般要与循环语句配合使用。

(7)break和continue语句

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

(8)with语句:将代码的作用域设置到一个特定的对象中

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

with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}

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

(9)switch语句

switch(expression){
case value:statement
break;
case value:statement
break;
case value:statement
break;
case value:statement
break;
default:statement
}

switch语句在比较值时使用的是全等操作符(===),因此不会发生类型转换。

【7】函数

function functionName(arg0,arg1,arg2,...,argN){
statements
}
  • 无需指定函数的返回值,因为任何ECMAScript函数都可以在任何时候通过return语句后跟要返回的值来实现返回任何值。
  • 位于return语句之后的任何代码都永远不会执行。
  • return语句也可以不带任何返回值,在这种情况下,函数在停止执行后将返回undefined。
  • 严格模式下:不能把函数、参数命名为eval或arguements;不能出现两个命名参数同名的情况。
  • ECMAScript中的参数在内部是用一个数组来表示的,在函数体内部可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
  • 没有传递值的命名参数会被自动赋予undefined值。
  • ECMAScript函数不能实现重载。在其他语言中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。ECMAScript函数没有签名,因为其参数是由包含零或多个值的数组来表示的,没有函数签名,真正的重载是不可能做到的。
  • 在ECMAScript函数中定义了两个名字相同的函数,则该名字只属于后定义的函数。
posted @ 2016-09-17 15:56  木子拖拖  阅读(116)  评论(0编辑  收藏  举报