JavaScript前端学习 2

一、运算符的优先级

, 运算符
使用 , 可以分割多个语言,一般可以在声明多个变量时使用,使用 , 运算符同时声明多个变量

 var a,b,c;

可以同时声明多个变量并赋值

var a=1,b=2,c=3;

在JS中运算符也有优先级
如:先乘除后加减
在JS中有一个运算符优先级的表,在表中越靠上优先级越高,优先级越高越优先计算,如果优先级一样,则从左往右计算。
但是这个表我们并不需要记忆,如果遇到优先级不清楚的,可以使用()来改变优先级
在这里插入图片描述

二、代码块

我们的程序是由一条一条语句构成的,语句是按照自上向下的顺序一条一条执行的,在JS中可以使用{}来为语句进行分组,同一个{}中的语句我们称为是一组语句,他们要么都执行,要么都不执行,一个{}中的语句我们也称为叫一个代码块,在代码块的后面就不用再编写;了
JS中的代码块,只具有分组的作用,没有其他的用途
代码块内容的内容,再外部都是完全可见的

三、流程控制语句

JS中的程序是从上到下一行一行执行的
通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行
语句的分类:
1、条件判断语句
2、条件分支语句
3、循环语句

条件判断语句:

使用条件判断语句可以在执行某个语句之前进行判断,如果条件成立才会执行语句,条件不成立则语句不执行。

IF语句

语法一:
if(条件表达式)
语句
if语句在执行时,会先对条件表达式进行求值判断,如果条件表达式的值为true,则执行if后的语句,如果条件表达式的值为false,则不会执行if后的语句
if语句只能控制紧随其后的那个语句,如果希望if语句可以控制多条语句,可以将这些语句统一放到代码块中
if语句后的代码块不是必须的,但是在开发中尽量写上代码块,即使if后只有一条语句

<script>
        var a=15;
        if(a>10&&a<=20)
        {
            console.log("a比10大,比20小")
        }
    </script>

语法二:
if(条件表达式)
{语句1}
else{语句2}
当该语句执行时,会先对if后的条件表达式进行求值判断,如果该值为true,则执行if后的语句,如果为false,则执行else后的语句
语法三:
if(条件表达式)
{语句1}
else if(条件表达式){语句2}
else if(条件表达式){语句3}
else{语句4}
当该语句执行时,会从上到下依次对条件表达式进行求值判断,如果该值为true,则执行当前语句,如果为false,则继续向下判断。
如果所有的条件都不满足,则执行最后一个else后的语句,该语句中,只会有一个代码块被执行,一旦代码块被执行了,则直接结束语句

四、if练习

prompt()可以弹出一个提示框,该提示框中会带有一个文本框,用户可以在文本框中输入一段内容, 该函数需要一个字符串作为参数,该字符串将会作为提示框的提示文字

用户输入的内容将会作为函数的返回值返回,可以定义一个变量来接收该内容

<script>
        /* 
        从键盘输入小明的期末成绩:
        当成绩为100时,'奖励一辆BMW'
        当成绩为【80~99】,'奖励一台iPhone15s'
        当成绩为【60~80】,'奖励一本参考书'
        其他时,什么都没有
        */

        // score就是小明的成绩
        var score = prompt("请输入小明的成绩(0~100):");
        if(score>100||score<0||isNaN(score))
        {alert("error");}
        else if(score == 100)
        {alert("宝马");}
        else if(score>=80)
        {alert("iPhone15s");}
        else if(score>=60)
        {alert("参考书");}
        else 
        {alert("什么都没有");}
    </script>
<script>
        /* 
        结婚
        高:180cm以上;富:1000万以上:帅:500以上;
        如果这三个条件同时满足,则:'我一定要嫁给他'
        如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余'
        如果三个条件都不满足,则:'不嫁!'
        */
        var height=prompt("请输入你的身高(CM):");
        var money=prompt("请输入你的财富(万):");
        var face=prompt("请输入你的颜值(PX):");
        if(height > 180 && money > 1000 && face > 500 )
        {alert("我一定要嫁给他");}
        else if(height > 180 || money > 1000 || face > 500 ) 
        {alert("嫁吧,比上不足,比下有余");}
        else
        {alert("不嫁!");}
    </script>
    <script>
        /* 
        编写程序,由键盘输入三个整数分别存入变量num1,num2,num3,
        对他们进行排序,并且从小到大输入。
        */
       var num1 = +prompt("请输入第一个数:");
       var num2 = +prompt("请输入第二个数:");
       var num3 = +prompt("请输入第三个数:");
       if(num1 < num2 && num1 < num3 )
       {
        if(num2 < num3)
        {alert(num1 + "--"+num2 +"--"+num3);}
        else{alert(num1 +"--"+num3 +"--"+num2);}
       }
       else if(num2 < num1 && num2 < num3 )
       {
        if(num1 < num3 )
       {alert(num2 + "--"+num1 +"--"+num3);}
       else
       {alert(num2 + "--"+num3 +"--"+num1);}
       }
       else
       {
        if(num1 < num2)
        {alert(num3 + "--"+num1 +"--"+num2);}
        else
        {alert(num3 + "--"+num2 +"--"+num1);}
       }
    </script>

五、条件分支语句

条件分支语句也叫switch语句
语法:
switch(条件表达式)
{
case 表达式:
语句1;break;
case 表达式:
语句2;break;
case 表达式:
语句3;break;
default:语句4;break;
}
执行流程:
在执行时会依次将case后的表达式的值和switch后的条件表达式的值进行全等比较。
如果比较结果为true,则从当前case处开始执行代码。
当前case后的所有代码都会执行,我们可以在case的后边跟着一个break关键字
这样可以确保只会执行当前case后的语句,而不会执行其他的case
如果比较结果为false,则继续向下比较
如果所有的比较结果都为false,则只执行default后的语句

switch语句和if语句的功能实际上有重复的,使用switch可以实现if的功能,同样使用if也可以实现switch的功能,所以在使用时,可以根据自己的习惯选择

<script>
        /* 
        成绩大于60分的,输出'合格',低于60分的,输出'不合格'
        */
        var score = 60;
        switch(score/10)
        {
            case 10:
            case 9:
            case 8:
            case 7:
            case 6:
                console.log("合格");break;
            default :
            console.log("不合格");break;
        }
        switch(true)
        {
            case score>=60:
                console.log("合格");break;
            default:
                console.log("不合格");break;
        }
    </script>

六、while循环

循环语句:
通过循环语句可以反复的执行一段代码多次

while循环语法:
while(条件表达式)
{
语句
}
while语句执行时,先对条件表达式进行判断,
如果为true,则执行循环体,循环体执行完毕后,继续对表达式进行判断,如果为true,则继续执行循环体,以此类推
如果为false,则终止循环

创建一个循环,往往需要三个步骤
1、创建初始化一个变量
2、在循环中设置一个条件表达式
3、定义一个更新表达式,每次更新初始化变量

do…while循环
语法:
do
{
语句
}while(条件表达式)
执行流程:
do…while语句在执行时,会先执行循环体,
循环体执行完毕后,在会while后的条件表达式进行判断,
如果结果为true,则继续执行循环体,执行完毕后继续判断以此类推
如果结果为false,则终止循环

实际上,两个语句的功能相似,不同的是while是先判断后执行,do…while则是先执行后判断
do…while可以保证循环体至少执行一次,而while不能

<script>
        var i = 1;
        while(i<=50)
        {document.write(i++ +"<br>")}

        do
        {
            document.write(i++ +"<br>")
        }while(i <= 10)
    </script>

练习

<script>
    /* 
    加入投资的年利率为5%,试求从1000增长到5000,需要花费多少年
    */
   var money = 1000;
   var count = 0;
   while(money < 5000)
   {
        money *= 1.05;
        count++;
   }
   alert("一共需要"+count+"年");
    </script>

七、FOR 循环

for语句,也是一个循环语句,也称为for循环
在for循环中,为我们提供了专门的位置用来放三个表达式:
1、初始化表达式
2、条件表达式
3、更新表达式

for循环的语法:
for(1初始化表达式;2条件表达式;3更新表达式)
{
语句
}

for循环的执行流程:
1、执行初始化表达式,初始化变量(初始化表达式只会执行一次)
2、执行条件表达式,判断是否执行循环
如果为true,则执行循环3
如果为false,则终止循环
3、执行更新表达式,更新表达式执行完毕继续重复2

for循环中的三个部分都可以省略,也可以写在外部
如果在for循环中不写任何的表达式,只写两个;
此时循环是一个死循环会一直执行下去,慎用

练习

<script> 
        var sum = 0;
        for(var i = 1;i <=100;i++)
        {
            if(i%2 !=0)
            {sum = sum+i;}
        }
        alert("100以内奇数之和为:"+sum)
    </script>
<script>
        var sum = 0;
        var count = 0
        for(var i = 1;i <=100;i++)
        {
            if(i%7 == 0)
            {sum = sum+i;
            count++;}
        }
        alert("100以内7的倍数之和:"+sum)
        alert("100以内7的倍数个数:"+count)
    </script>
<script>
        /* 
        水仙花数是指一个3位数,他的每个位上的数字的3次幂之和等于它本身。
        */
       for(var i = 100;i<1000;i++)
       {var bai = parseInt(i/100);
       var shi = parseInt((i-bai*100)/10);
       var ge = i%10;
       if(bai*bai*bai + shi*shi*shi + ge*ge*ge == i)
       {alert(i)}
       }
    </script>

八、质数练习

<script>
       /* 
       在页面中接受一个用户输入的数字,并判断该数是否是质数。
       质数:只能被1和他自身整除的数,1不是质数也不是合数,质数必须是大于1的自然数。
       */
    //创建一个变量来保存当前的数的状态,默认当前num是质数
    var num = prompt("请输入一个大于0的数:");
    if(num<=1)
    {
        alert("该值不合法");
    }
    else
    {
        var flag = true;
    for(var i=2;i<num;i++)
    {
        if(num%i == 0)
        {
            //如果num能被i整除,则说明num一定不是质数
            // 设置flag为false
            flag = false; 
        }
    }
    if(flag)
    {
        alert(num+"是质数");
    }
    else{
        alert("这个不是质数");
    }
    }
    </script>

九、嵌套的for循环

<script>
        // 通过一个for循环来输出图形
        // 这个for循环执行几次,图形的高度就是多少
        // 它可以用来控制图形的高度
        for(var i=0;i<5;i++)
        {
            /* 
            在循环的内部再创建一个循环,用来控制图形的宽度
            目前我们的外部的for循环执行1次,内部的就会执行5次
            内层循环可以来决定图形的宽度,执行几次图形的宽度就是多少
            */
           for(var j=0;j<5;j++)
           {
            document.write("*");
           }
        //    输出一个换行
           document.write("<br>");
        }
        /*输出的图形为: 
        *****
        *****
        *****
        *****
        *****
        */
    </script>
<script>
        for(var i=0;i<5;i++)
        {
           for(var j=0;j<i+1;j++)
           {
            document.write("*");
           }
           document.write("<br>");
        }
        /* 
        输出的图形为:
        *
        **
        ***
        ****
        *****
        */
    </script>
<script>
        for(var i=0;i<5;i++)
        {
           for(var j=0;j<5-i;j++)
           {
            document.write("*");
           }
           document.write("<br>");
        }
        /* 
        输出的图形为:
        *****
        ****
        ***
        **
        *
        */
    </script>

练习

<script>
        /* 
        1、打印99乘法表
        */
        for(var i=1;i<=9;i++)
        {
           for(var j=1;j<=i;j++)
           {
            document.write("<span>"+j+"*"+i+"="+i*j+"</span>");
           }
           document.write("<br>");
        }
    </script>
    <style>
        span{display: inline-block;width: 80px;}
    </style>
<script>
        /* 
        打印出1~100之间所有的质数
        */
       for(var i=2;i<=100;i++)
       {
        var flag=true;
        for(var j=2;j<i;j++)
        {
            if(i%j==0)
            {flag = false;}
        }
        if(flag)
        {
            console.log(i);
        }
       }
    </script>

十、break和contie

break关键字可以用来退出switch或循环语句
不能在if语句中使用break和continue
break关键字,会立刻终止离他最近的那个循环语句

label(标签)
可以为循环语句创建一个label,来标识当前的循环
语法:label:循环语句
使用break语句时,可以在break后跟着一个label,这样break将会结束指定的循环,而不是最近的

continue关键字可以用来跳过当次循环
同样continue也是默认只会对离他最近的循环起作用

测试程序性能

在程序执行前,开启计时器

<script>
        // console.time("计时器的名字")可以用来开启一个计时器
        // 他需要一个字符串作为参数,这个字符串会作为计时器的标识
        console.time("test");
        for(var i=2;i<=10000;i++)
       {
        var flag=true;
        for(var j=2;j<i;j++)
        {
            if(i%j==0)
            {flag = false;break;}
        }
        if(flag)
        {
            console.log(i);
        }
       }
       console.timeEnd("test");
    </script>

Math.sqrt()开方

<script>
        console.time("test");
        for(var i=2;i<=10000;i++)
       {
        var flag=true;
        for(var j=2;j<Math.sqrt(i);j++)
        {
            if(i%j==0)
            {flag = false;break;}
        }
        if(flag)
        {
            console.log(i);
        }
       }
       console.timeEnd("test");
    </script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值