第三章 基本概念 3.6-3.9

3.6 语句

3.6.1 if
var i = 26
if(i > 25){
    console.log('Greater than 25')
}else{
    console.log('Less than 25')
}
//Greater than 25
3.6.2 do-while
  • 后测试
var i = 0;
do{
    i += 2;
}while(i < 3)
//4
3.6.3 while
  • 前测试
var i = 0;
while(i<3){
    i += 2;
}
//4
3.6.4 for
for(var i = 0; i< 10; i++){
    console.log('-->inner:',i); //0~9
}
console.log('-->outer:',i); //10
3.6.5 for-in
  • 用于枚举对象的属性
  • 如果对象为null或undefined,建议先进行检测
3.6.6 label
  • 添加标签
  • 一般用于多循环嵌套
  • 需要使用描述性标签,不要嵌套过多循环
start: 
for(var i = 0; i < count; i++){
    console.log(i);
}
3.6.7 break和continue
var num = 0;
for(var i=1; i<10; i++){
    if(i%5 == 0){
        break;
    }
    num++;
}
console.log(num); //4
var num = 0;
for(var i=1; i<10; i++){
    if(i%5 == 0){
        continue;
    }
    num++;
}
console.log(num); //8
  • 综合
var num = 0;
for(var i=0; i<10; i++){
    for(var j=0; j<10; j++){
        if(i==5 && j==5){
            break;
        }
        num++;
    }
}
console.log(num); //100
var num = 0;
for(var i=0; i<10; i++){
    for(var j=0; j<10; j++){
        if(i==5 && j==5){
            break; //break相当于退出j循环,但进入了i的下一个循环所以会继续累加,所以只少了5
        }
        num++;
    }
}
console.log(num); //95
var num = 0;
for(var i=0; i<10; i++){
    for(var j=0; j<10; j++){
        if(i==5 && j==5){
            continue; //continue相当于退出j循环,但进入了j的下一个循环所以会继续累加,所以只少了1
        }
        num++;
    }
}
console.log(num); //99
var num = 0;
outermost:
for(var i=0; i<10; i++){
    for(var j=0; j<10; j++){
        if(i==5 && j==5){
            break outermost; //退出到了最外层
        }
        num++;
    }
}
console.log(num); //55
var num = 0;
outermost:
for(var i=0; i<10; i++){
    for(var j=0; j<10; j++){
        if(i==5 && j==5){
            continue outermost; 
        }
        num++;
    }
}
console.log(num); //95
3.6.8 with
  • 将代码的作用域设置到一个特定的对象中
  • 不建议使用:调试困难、性能下降
var local = {
    hostname: '192.168.1.1',
    port: '8080'
}
var hname = local.hostname,
    pt = local.port;
//相当于
with(local){
    var hname = hostname,
        pt = port;
}
3.6.9 switch
  • 使用全等比较
switch(i){
    case 25:
        /* 合并两种情形 */
    case 35: 
        console.log('25 or 35');
        break;
    case 45:
        console.log('45');
        break;
    default:
        console.log('other');
}
3.7.1 函数
  • 参数不是必需,根据arguments.length实现类重载功能
function howManyArgs(){
    console.log(arguments.length);
}
howManyArgs("string",5); //2
howManyArgs(); //0
howManyArgs(12); //1
  • arguments永远和对应的命名参数值保持同步
function doAdd(num1, num2){
    arguments[1] = 10;
    console.log(arguments[0] + num2);
} 
doAdd(20,20) //30
  • 没有传递值的命名参数自动赋值undefined
posted @ 2019-08-23 17:16  KevinTseng  阅读(97)  评论(0编辑  收藏  举报