04 - JavaScript(流程控制,比较运算符,for循环)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xyyojl/article/details/82794378

#if/for循环

流程控制

###比较运算符
> < >= <= == != === !==

  • == 表示等于
  • != 不等于
  • === 全等于(除了判断值,还会判断数据类型,下同)
  • !==不全等于
  • 比较之后得到的结果都是boolean

if条件语句

当条件为真时,执行代码,条件为假时,不管

if (条件) {
	console.log("条件为真");
}

两条分支

if (条件) {
    console.log("条件为真");
} else {
    console.log("条件为假");
}

多条分支

let a = 2;
if (a === 1) {
    console.log("a 为 1");
} else if(a === 2){
    console.log("a 为 2");
}else if(a === 3){
    console.log("a 为 3");
}else {
    console.log("a不是1,2,3");
}

if中的条件会强制转化为布尔值false的六个值:

"" 0 null false undfined NaN

switch

  • 必须条件
    • 分支判断采用===比较
    • ===比较符前面的变量保持相同
  • break 它用于跳出switch()语句,来阻止代码自动地向下一个case执行
  • default 关键词来规定匹配不存在时做的事情
let today = 3;
switch (today) {
    case 1://判断today是否全等于是1,是则执行对应的代码
        console.log("今天是星期一");
        break;//break用于阻止后续代码的执行
    case 2:
        console.log("今天是星期二");
        break;
    case 3:
        console.log("今天是星期三");
        break;  
    case 4:
        console.log("今天是星期四") ;
        break;
    case 5:
        console.log("今天是星期五");
        break;
    case 6:
        console.log("今天是星期六");
        break;
    case 7:
        console.log("今天是星期日");  
        break;  
    default:
        break;
}

三目运算符

前提: if一定有且仅有两个分支 并且每一条分支 只有一条语句

let a = 5;
if(a !== 5){
    console.log("a不等于5");
}else{
    console.log("a等于5");
}
//三目运算符,在实际开发中,不建议使用
a!=5 ? console.log("a不等于5") : console.log("a等于5")

for循环

重复执行的代码(有些代码需要反复执行)—>for循环

//for(初始值;判断条件;步幅){code}
for (let i = 0; i < 5; i++) {
    console.log(i);   //打印从0到4     
}
console.log("for循环结束时的i="+i);
//i结束的时候是多少?当i=9,判断为真,执行循环体

执行顺序

for( 1;2;3 ){ 
	4
}
1->2->4->3->2->4->3->2
当判断条件为假的时候,跳出循环,-->循环体,当我们步长增加后,进入判断语句,--->跳出循环
声明的语句1只在开头执行一次,就没有了

不同的写法:

//一
let i=0;
for(;i<10;i++){
    console.log(i);
}
//二:当循环体执行完,再执行步长,步长可以提到循环体的后面,当语句1和3在外面的时候记得两个分号不能省略,一个木头要变成三段,要砍两刀(分号)
let i=0;
for(;i<10;){
    console.log(i);
    i++
}
//实现函数执行10次
function fn(){
    console.log("大家好")
}
for(let i=0;i<10;i++){
    fn();
}
//要有三条语句,加两个分号
console.log("for循环结束时的i="+i);

for循环使用小例子

给button按钮添加事件,点击button,出现弹窗

//for循环,真正帮帮你注册/绑定事件,(它不负责帮你触发事件)没有帮你触发事件
let aBtn=document.getElementsByTagName("button");
for(let i=0;i<10;i++){
	aBtn[i].index=i;	//条件0 1
	aBtn[i].i=i;
    aBtn[i].onclick=function(){
        alert("hi");
        //需求:点击弹出弹窗,弹窗的内容是i在集合里面对应的序号
        //实现不了需求,结束弹出8,点击事件执行时,for循环早就完了,结束之后再访问i,因为for循环执行完了,i就等于最后的那个值
        alert(i);	//8	,一定直接不能使用i
        alert(this.index);	//0 1 2 3 4 5 6 7 
    }
    console.log(i);	//i=8
    /*用来区分,对象和对象的序号之间不一样,点击不同的对象,函数对应的this是不一样的
    给你不同的对象设置这么一个属性,不同的对象下面有一个名字相同的属性*/
}
/*要在事件里面,使用对象对应的的序号值,不要直接使用i,要使用自定义属性
要使用自身索引值时要使用自定义属性*/

continue 跳过本次循环

for (let i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    console.log(i);   //当i=3时,跳过此次循环,所以3没有被打印出来     
}

break 跳出循环

for (let i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
    console.log(i);   //当i=3时,跳过循环,所以2后面的都没有打印     
}

while,先判断再执行代码,决定当前是否循环

//性能跟之前的那个差不多
let aBtn=document.getElementsByTagName("button");
let i=0;
while(i<10){
    aBtn[i].onclick=function(){
        alert(1)
    }
    i++;
}

do while 先执行再判断,决定是否进行下一次循环

let i=0;
do{
    console.log(i)
}while(false)

死循环

for(let i=0;true;i++){
    alert(i);
}

for循环嵌套

//从外面往里面执行,遇到循环体(另一个for 循环)
for(let i=0;i<5;i++){
    for(let j=0;j<6;j++){
        console.log(1)	//执行30次
    }
    
}

猜你喜欢

转载自blog.csdn.net/xyyojl/article/details/82794378