高程(3):操作符、for、for...in循环、break/continue/return语句、函数等

1、关系操作符

注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值。

如:"a" > "b"  返回 false;"a" > "B"  返回 true;

2)[特别注意]如果是比较两个数字类型的字符串,也是按照字符编码值比较。

如:"256" > "6"  返回 false;

2、相等==和全等===

区别:相等比较有隐式类型转换,而全等则没有类型和数据都要相等才能返回true。

3、逗号操作符

注意点:下面代码中的写法注意区分,b2会变成全局变量

 

function show(){
  var a1 = 1, a2 = 2;
  var b1 = b2 = 3;          
}
console.log(b2);    //b2成为全局变量

 

4、for循环

注意点:如下代码,for循环内部定义的变量是父级作用域的变量,for、if循环没有内部块级作用域

for(var i = 0; i < 10; i++){
    var a = 3;
}

5、for...in...循环:一般用于循环处理json、object,获取key、value做后续处理。

注意点:由于object对象的属性没有顺序,故for...in...循环输出的属性名顺序是不可预测的。

var json = {
   "23": 23,
   "12": 12,
   "2": 2
};
for(var key in json){
  console.log(key);  //分别返回 2,12,23
}

6、break、continue、return语句区别

1)break:跳出上一级for循环

var num = 0;
function show(){
  for(var i = 0; i < 10; i++){
     if(i%5==0){
       break;
     }
     num++;
  }
  num++;
}
show();
console.log(num);   //返回1

2)continue:跳出当前次的后续操作,继续下一次for循环操作。

var num = 0;
function show(){
  for(var i = 0; i < 10; i++){
     if(i%5==0){
       continue;
     }
     num++;
  }
  num++;
}
show();
console.log(num);  //返回9

3)return:跳出当前函数

var num = 0;
function show(){
  for(var i = 0; i < 10; i++){
     if(i%5==0){
       return;
     }
     num++;
  }
  num++;
}
show();
console.log(num);  //返回0

7、switch语句:如果有又臭又长的if,可以用switch来处理,更加清晰、易于维护

注意点:switch的case操作可以使用表达式。

var num = 10;
switch(true){
  case   num < 0: alert('<0');
    break;  
  case   num > 0: alert('>0');
    break;  
  case   num == 0: alert('=0');
    break;  
}

8、函数

注意点:理解函数参数

函数内部的arguments类数组永远对应调用函数时所传的实参

function abc(a, b){
   //此时 a = arguments[0] = 2;  b = undefined;
   b = 3;  //b = 3;
   arguments[1] = 4;  // 不变
   return b;  //返回 3
}
cosole.log(abc(2)); //3
function abc(a, b){
   //此时 a = arguments[0] = 2;  b = arguments[1] = 8;
   b = 3;  //b = arguments[1] = 3;
   arguments[1] = 4;  // b = arguments[1] = 4;
   return b;  //返回 4
}
cosole.log(abc(2, 8)); //4
function abc(a, b){
  console.log(arguments.length);  //1
  arguments[1] = 2;
  console.log(b);  //undefined
  console.log(arguments.length);  //1
}
abc(2);

PS:1)js中函数没有重载,定义同名函数,后面的函数会覆盖前面函数。

2)可以根据arguments参数的个数判断,来处理不同个参数情况下对程序的控制。

function fn(){
  if(arguments.length == 1){
    return arguments[0] + 10;
  }else if(arguments.length == 2){
    return argument[0] + arguments[1] + 20;
  }
}

建议:有参数时使用json对象的形式作为参数传递,好处:1)简洁明了;2)可维护性高

function fn(options){
  options.a = options.a || "10"; //默认赋值10
  for(var key in options){ console.log(key, options[key])}
}
fn({
  a: 1,
  b: 2
})

 

posted @ 2016-09-02 22:52  搜易贷  阅读(359)  评论(0编辑  收藏  举报