JS中的语句详解与函数定义

目录

一、语句    

1. if语句 

2.if-else语句

1.双分支

2.多重分支 

 3.switch语句

 4.do-while语句

 5.while语句

6.for语句 

 7.for-in语句

8.for-of语句 

 9.标签语句

10.break和continue语句 

 1.与标签语句的配合使用

11.with语句

 2.函数

1.分类

2.严格模式下对函数的限制


一、语句    

简称流控制语句,控制代码的执行顺序

1. if语句 

用于语句判断,操作数可以不是布尔值,操作过程中会默认调用Boolean()函数,结果为布尔值

格式: 

         if(条件表达式){

                表达式成立时执行代码段

             } 

if(true==1){
   console.log('你太棒了')
}
//输出"你太棒了"

2.if-else语句

1.双分支

语句的双分支选择

格式:

if(条件表达式){

           表达式成立时执行

    }else{

           表达式不成立时执行

  }

if(true==0){
   console.log('你太棒了')
}else{
    console.log('再接再厉')
}
//输出"再接再厉"

2.多重分支 

语句的多重选择(注意:这种方法被switch语句取代)

格式:

if(条件1){

      条件1成立时执行

}else if(条件2){

       条件2成立时执行

}else if(条件3){

       条件3成立时执行

}else{

       条件不成立时执行

}

let num=3;
if(num==1){
    console.log('太棒了')
}else if(num==2){
    console.log('优秀')
}else if(num==3){
    console.log('合格')
}else{
    console.log('继续加油')
}
//输出"合格"

 3.switch语句

语句多重选择。值得括号可以省略。break关键字会强制跳出switch语句,default关键字会在所有条件都不满足时返回

格式:

switch(条件表达式){

   case(值1):条件表达式与值1匹配全等时,执行的代码段;break;

   case(值2):条件表达式与值2匹配全等时,执行的代码段;break;

   case(值3):条件表达式与值3匹配全等时,执行的代码段;break;

   default:所有case匹配失败后默认执行的语句;

}

     let num=3;    
     switch(num){
            case(1):console.log('太棒了');break;
            case(2):console.log('优秀');break;
            case(3):console.log('合格');break;
            default:console.log('再接再厉');
        }
        //输出"合格"

注意:为避免不必要的条件判断,最好给每条语句后面加上break。如果确实需要连续匹配多个条件,推荐写注释说明

switch(i){
  case 25://跳过
  case 26:console.log('25 or 26');break
  case 45:console.log('45');break;
  default:console.log('Other');
}

switch语句可以用于所有数据类型,而且条件的值不需要要时常量 ,也可以是变量或表达式

switch('helloworld'){ //如果这里有空格,那么下面一定也要有个空格
      case "hello"+"world":console.log("Greeting was found");break;
      case "Good Bay":console.log("Closing was found");break;
      default:console.log("0");
  }
//输出Greeting was found



let a=12;
switch(true){
    case a<0:console.log(1);break;
    case a>0:console.log(2);break;
    default:console.log('a不存在')
}
//输出2

switch语句在比较每个条件的值时会采用全等操作符 

let a=12;
switch(a){
    case '12':console.log(1);break;
    case 56:console.log(2);break;
    default:console.log('找不到a对应的值')
}
//输出找不到a对应的值

 4.do-while语句

 特征:后测试循环语句,循环体内代码至少执行一遍

格式:

  do{

     循环体;

     更新循环变量

    }while(循环条件)

        let a=1;
        do{
            a+=1;
            console.log(a) ;
        }while(a<10);
        //输出2,3,4,5,6,7,8,9,10  

 5.while语句

先测试循环语句。

格式:

while(循环条件){

     循环体;

     更新循环变量;

  }

let i=1;
while(i<4){
   console.log(i);
   i++;
}
//输出1,2,3

6.for语句 

特征:先测试循环语句。无法通过while循环实现的逻辑也无法通过for循环实现

          三个条件全部生虐可以创建一个无限循环,只包含循环条件实际上变成了while循环

格式:

for(定义循环变量;循环条件;更新循环变量){

                  循环体

          }

for(let i=1;i<5;i++){
   console.log(i);
}
//输出1,2,3,4


for(;;){//无穷循环
  doSomething();
}


let i=1
for(;i<5;){
console.log(i);
}
//输出1,2,3,4

 7.for-in语句

特征:迭代语句,无法保证返回对象属性的顺序。用于枚举对象中的非符号键属性。无法迭代null与undefined

用途:1.可以用于遍历数组的元素

           2.可以用于遍历对象的所有属性数据。

格式:

         for(const 变量 in 遍历目标){

                 迭代枚举;

              } 

for(const b in window){
    console.log(b);
}
//输出window对象的所有属性



let a=[1,2,3,4,5,6];
for(const b in a){
      console.log(b);
}
//输出0,1,2,3,4,5

8.for-of语句 

特征:迭代语句,按照可迭代对象的next()方法产生值的顺序迭代元素,用于遍历可迭代对象的元素

格式:for(const 变量 of 可迭代对象){

                         遍历

            }

let a=[1,2,3,4,5,6];
for(const b of a){
      console.log(b);
}
//输出1,2,3,4,5,6

 9.标签语句

给语句加标签

格式:

    标签:语句

outermost:for(let a=1;a<5;a++){
                   console.log(a);
                }

10.break和continue语句 

 break关键字会强制跳出循环体,continue会强制本次循环

  for(let i=1;i<5;i++){
     console.log(i);//返回1,2
     if(i==3){
        break;
    }
   }

//break与continue的区别

  for(let i=1;i<5;i++){
    
     if(i==3){
        continue;
    } 
    console.log(i);//1,2,4
   }

    

 1.与标签语句的配合使用

返回代码中特定的位置。

break与continue与标签语句组合使用能实现复杂的逻辑,但也容易出错,建议使用时嵌套不要太深

let num=0;
outermost:for(let i=0;i<10;i++){
    for(let j=0;j<10;j++){
        if(i==5&&j==5){
            break outermost;
        }
        num++;
    }
}
console.log(num);//55


//我们把标签语句删掉
let num=0;
for(let i=0;i<10;i++){
    for(let j=0;j<10;j++){
        if(i==5&&j==5){
            break;
        }
        num++;
    }
}
console.log(num);//95

 在这个例子中,outermost标签标识的是第一个for语句,正常情况下,每个循环执行执行10次,num++会执行100次,但是break标签带来了一个变数,即要退出到标签,此时不仅退出了内部循环,还退出了外部循环,所以返回55,我们再把这个标签删除,单纯用一个break,此时可以看到这里只是结束了内部标签,直接跳到了循环i=6,这里有时候我们就可能产生思维误区,浅浅介绍一下

let num=0;
outermost:for(let i=0;i<10;i++){
    for(let j=0;j<10;j++){
        if(i==5&&j==5){
            continue outermost ;
        }
        num++;
    }
}
console.log(num);//95

//删除标签

let num=0;
for(let i=0;i<10;i++){
    for(let j=0;j<10;j++){
        if(i==5&&j==5){
            continue ;
        }
        num++;
    }
}
console.log(num);//99

 我们再来看一下这个例子,第一个continue语句会强制循环继续执行,当执行到i=5,j=5时,直接跳过i=5,但是i=5这个循环已经执行了5次,所以最后的结果时95,我们再来看一下第二个,当我们删除标签语句后,continue只会跳过i=5,j=5这一次循环,继续执行下一次循环i=5,j=6,所以结果为99

11.with语句

将代码作用域设置为特定的对象,严格模式下不允许使用with语句

 使用with语句的主要场所是针对一个对象的反复操作,听到这里可能会一头雾水,那么我们就拿我们常用的document写一个代码事例

        //你还在这样写吗???
        let a=document.getElementById('a');
        let b=document.getElementById('b');

        //大佬们都在这么写!!!
        with(document){
            let a=getElementById('a');
            let b=getElementById('b')
        }

 2.函数

1.分类

ECMAScript使用function关键字声明,return会强制停止函数执行

格式:

 匿名函数格式  :                                                                            传入参数:

//这是一个标准函数
function abc(){
    let a=100;
    console.log(a)
}
abc();//100


//这是一个匿名函数
(function(b){
    console.log(b)
})(233)//233

 注意:

1.只要碰到return语句,函数就会立即停止执行并退出,因此,return后面的所有代码都不会执行。

2.一个函数中可以有多个return。

3.return也可以不带返回值,用于提前终止函数执行

4.另外别忘了,没有返回值的函数实际上会返回特殊值undefined

2.严格模式下对函数的限制

1.不能使用evalarguments作为函数名

2.函数的参数不能叫evalarguments

3.两个参数不能是同一个名称

学海无涯,希望追求知识的小伙伴们每天都会收获新的知识,也希望我写的这些对大家都有所帮助啦

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值