JavaScript的结构

**

流程控制

**
为什么会有流程控制呢?代码执行不可能都是一行接着一行的去执行,所以出现了流程控制,出现了结构。
同样在实际项目中, 不可能都是简单的顺序结构(从上往下执行), 会出现不同的条件, 就要根据条件不同做出相应的处理,就有了流程控制。

js的基本结构

顺序结构,分支结构,循环结构。

顺序结构:

从上到下执行的代码就是顺序结构
程序默认就是从上到下,一行一行的顺序执行的

console.log("aaa")
console.log("bbb")
console.log("ccc")
//按照顺序输出  aaa   bbb  ccc

分支结构*

也称为选择结构 , 根据不同的情况,去执行对应的代码。
比如常用的if语句,switch语句等是最为明显的分支结构。

			var a=Math.random();
			if(a>0.5){
					console.log("a是大于0.5")
			}else{
					console.log("a是小于0.5")
			}
			
 if(条件){
			        执行语句
			    }
			    if(条件){
			        执行语句1,为真时执行
			    }else{
			        执行语句2,为假时执行
			    }

当条件判断为真true时,执行花括号内的语句,如果条件为假false,跳过花括号内的语句
当条件判断为真true时,执行语句1,如果条件为假false,执行语句2。
if()括号里面的东西我们通常也叫它逻辑点,为真是true,为假是false,这是布尔值,需要通过逻辑运算符得到。

但是这其中含有一些隐式转换:

if(1){
    alert("会弹出来么?");
}

1是数值型,不是布尔值,更不是true?为什么会执行花括号内的语句了呢?
在一些特定的情况下,计算机会进行一些隐式转换,他和强制类型转换不一样,他不需要你做什么,会自动对数据类型进行转换
在运算中,if(小括号)中的语句会发生隐式类型转换。
比如

 1.运算中的隐式类型转换:
    var a = "1",b = 2;
    a + b = ???

+号有两种含义:数学中的+号运算符;字符串的拼接。优先字符串拼接,所以在检测到+号左右两边存在字符串的时候,会自动将另一边不是字符串的数据,转成字符串,再进行操作
除了+号有两层意义为外,-/%号只有数学意义,所以当进行-/%的时候,默认将运算符两边的数据类型隐式转换成数字类型再进行运算

其中if(小括号)内的隐式类型转换。
if()中只需要布尔值,那么在if判断中,会把括号内所有的数据类型,都隐式转换成布尔型。
在if()中,非零数字都会转成true,0为false,非空字符串都会转成true,""为false;这是两条基础规则
在if()中,NaN,null,undefined为false
在if()中,如果放置对象(数组,函数…),if也会默认为true

switch()多分支语句

注意:在switch()内,不会发生隐式数据类型转换,因为switch语句中必须是===条件,三个等于则判断是否全等,值,类型,都得相等。

var a=0;
switch(a){
    case 0:alert("零");
    break;
    case 1:alert("一");
    case 2:alert("二");
    default:alert("不识别的数字");
}

swicth()内,只是输入一个参数。
switch()内,不会做判断,在case身上判断这个值是否符合。
switch()内,不能做判断,同时在case后也不能做条件判断,

注意:如果判定的是范围,不要使用switch语句;判定具体数据的时候,才使用switch,比如判断星期几;判断成绩;

注意switch的应用场景:有多个 确定值 需要判断的时候

注意case语句的穿透,要加break语句:如果程序没有break语句,那么解析器会继续向下解析

注意default相当于if语句中的else,当以上条件都不满足的时候,执行default

if常用语判断一定范围内的数据 ,常用于条件判断。
switch常用语判断固定的数据,常用于多个固定值判断

循环结构

重复性的工作,这些重复性的工作有着极其相似的代码
如果重复书写代码,就会有很多的代码冗余。那么这个时候我们应该使用的就是js中的循环结构。

注意其中 如何跳出循环

continue和break都是用来控制循环结构的,主要是用来停止循环。
continue表示终止本次循环,还执行后面的循环。也可以理解成跳过本次循环中剩下的语句,执行下一次循环。
break表示完全结束一个循环,跳出循环体执行循环后面的语句。

  1. while循环

    			 while(条件){
    			        执行语句
    			    }
    

    当条件为true时,会一直重复执行花括号内的执行语句。注意:千万不要造成死循环

  var i = 0;        //计数器
    while(i<10){      //停止的条件
        document.write("hello world”);
        i++;          //改变计数器
    }
注意:为避免死循环,一定要在循环体内改变条件中使用的变量的值
  1. do while循环

注意:do和while都是系统关键字
do{
当条件为真,执行这里的语句
}while(条件){
当条件为假,执行这里的语句
}
当条件为真时,执行do的语句,当条件为假时,执行while的语句
注意do-while的改变计数器需要写在do语句中,否则会造成死循环。
while和do-while的区别?
do-while无论结果为真还是为假,都会执行一次

  1. for循环

第一种理解方式:

for(变量初始化; 判断条件; 变量更新){
// 循环体内执行的代码
}

第二种理解方式:

 for(语句1;语句2;语句3){
        需要执行的代码块
    }
    语句1:在循环体开始前执行----计数器
    语句2:循环的条件--------停止的条件
    语句3:在循环体被执行后执行---改变计数器
for(var i = 0; i < 10; i++){
    console.log(1);
}

注意在for循环中语句之间用“;”隔开。
小技巧:在知道执行次数时用for,在无法判断循环次数时用while。

for循环嵌套时,注意各个循环的计数器变量名不能重复,否则会变成死循环,那什么是死循环呢。
无法靠自身控制结束的循环,称为死循环,但是可以利用死循环的原理去利用代码解决一些生活上常有逻辑问题。

for、while、do…while的区别

1、同一个功能三种循环都可以实现
2、如果知道循环次数用for循环,不知道循环次数用while或者do…while循环
3、如果需要无条件先执行一次用do…while,否则用while

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值