js语言的语法与c语言不同的地方小结

1.语句

1.for-in语句
for-in语句是一种精准的迭代语句,可以用来枚举对象的属性(枚举的意思是全部列出来的意思)

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

这个例子中,用for-in来显示了BOM中的window对象的所有属性。如果表示要迭代的对象的变量的值是null或者undefined,for-in会抛出错误,在ecm5中则是不执行循环体。为了保证兼容性,最好就是先检查该对象不是null或者undefined.

2.label语句
使用label语句可以在代码中添加标签,以便将来使用。一般是要与for循环语句配合使用,break和continue语句都可以与label语句联合使用,从而返回代码特定的位置。
ex:

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

}
alert(num);//55 这段代码就是返回标签的意思,为了完成代码的可阅读性,一定要使用描述性标签。

3.with语句
with 语句的作用是将代码的作用域设置到一个特定的对象中。定义with语句的目的主要是为了简化多次编写同一个对象的工作。ex:

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

//上面几行代码都包含location对象,如果使用with语句,可以把上面的代码改写成如下所示
 with(location){
     var qs=search.substiring(1);
     var hostName=hostname;
     var url=href;

}

严格模式下不允许使用with语句,在开发大型应用程序时,不建议使用with语句,这个语句给代码调试增加了困难。

4.switch 语句的不同之处
switch 语句中可以使用任何数据类型(其他语言中只能是使用数值)
ex:

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

switch传true的原因是每个case值都可以返回一个布尔值

2.函数

函数签名

函数签名不包括返回值(类型),而是参数类型,参数个数,参数顺序。

因为没函数签名,所以没有函数重载这一说。

js的函数更具有有趣性

1.无需指定函数的返回值,因为在js中的函数只是用function来定义,可以返回值,也可以不返回,如果编写的时候没有写返回,实际上是有返回undefined的。

2.没有函数签名的概念,因为其函数的参数是以一个包含零或者多个值得数组的形式传递的。ECMscript还是你的户不介意传递来多少个函数,也不介意定义函数时的形参册设定与否,而是在乎在调用函数时传的参,也不在意个数,这是JS一个比较有趣的地方。
在定义函数时,命函数只是提供便利,但不是必须的。可以用argument对象来获得调用函数时传的参数,因为在**js里面的参数是存在一个数组里面,而这个数组的长度是由调用函数时传入的参数决定的的。**ex:

function doAdd(){
     if(arguments.length==1)
          {alert(arguments[0]+10);}
   else if(arguments.length==2)
          {alert(arguments[0]+arguments[1]);}
}
doAdd(10);//20
doAdd(30,20);//50.

你可能感兴趣的:(浅谈前端学习)