js第n+1天

86 阅读3分钟

js第n+1天

运算符

算术运算符

求和:+ 求差:- 求积:* 求商:/ 取余:%(取余数)

    <script>
        let num1 = 10;
        let num2 = 5;
        console.log(num1 + num2 );
        console.log(num1 - num2 );
        console.log(num1 * num2 );
        console.log(num1 / num2 );
        
        let num3 = 24;
        let num4 = 25;
        // 取余数,被整除后剩下的数
        console.log(num3 % num4 );
        // 有多个运算符的时候,先乘除后加减,有括号先算括号里面的
    </script>

特点:从左到右,有括号的先算括号里面的,先乘除,取余,后加减

案例1

计算圆的面积 圆的面积公式:Π* r * r

    <script>
        // 圆的面积 Π×r×r
        // Math.PI代表的是Π
        let r = prompt("半径");
        console.log(Math.PI * r * r);
    </script>
赋值运算符

对变量进行赋值的运算符 已经学过的赋值运算符:= (将等号右边的值赋给左边,要求左边必须是个变量) += %= /= *=

    <script>
        let num = 10;
        // num += 1;
        // num -= 1;
        // num *=2;
        // num /=5;
        num %=20;
        console.log(num);
    </script>
一元运算符

自增:++,让变量+1 自减:--,让变量-1

前置自增:

    <script>
        let i = 1;
        console.log(++i);//2
    </script>

每执行一次,当前变量值加1(作用相当于num +=1)

后置自减:

    <script>
        let i = 1;
        console.log(i++);//2
    </script>

每执行一次,当前变量值加1(作用相当于num +=1

参与运算时,前置后置的区别

前置

    <script>
        let i = 1;
        console.log(++i + 2);//4
    </script>

先在自身加1的值,变成2之后再相加,再输出为4

后置

    <script>
        let i = 1;
        console.log(i++ + 2);//3
    </script>

先和2相加,输出为3,再在自身加1,变成2

自减也是同理

案例2
    <script>
        let i = 1;
        console.log(i++ + ++i + i);//7
    </script>

i++在式子里为1,自身加1 值为2 ++i为2+1值为3 i为3 总计为7

比较运算符

作用:比较大小,是否相等

左边是否大于右边
<左边是否小于右边
>=左边是否大于或等于右边
<=左边是否小于或等于右边
==左右两边是否相等,将两边的数据进行转换为数值
===左右两边是否类型和值都相等
!=左右两边数值是否不相等
!==左右两边是否不全等

==:只比较数值,不比较类型 ===:又比较数值,又比较类型 工作中更常用===,!==

注意点:数字类型跟字符串比较时,会把字符串转变为数字进行比较 字符串比较,是比较的字符对应的ASCII码 从左往右依次比较 如果第一位一样再比较第二位,以此类推 比较的少,了解即可

图片1.png

NaN不等于任何值,包括它本身 尽量不要比较小数,因为小数有精度问题

注意点(比较结果为boolean类型,即只会得到true或false)

逻辑运算符
&&逻辑与并且符号两边都为true结果才为true一假则假
||逻辑或或者符号两边有一个true就为true一真则真
逻辑非取反true变false,false变true真变假,假变真
    <script>
        // ||或,一真则真
        console.log(100 > 10 || 2>23 || 1>21 || 12>2);
        // &&与,一假则假
        console.log(12 > 10 && 12>32 && 12>3);
        // !相反
        let num = true
        console.log(!num);//false
        num = false
        console.log(!num);//true
        // null undefined 0 ""的布尔值都是false
    </script>
逻辑运算符的短路

短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行

&&:左边为false就短路 ||:左边为true就短路

Snipaste_2022-03-27_22-35-33.png

案例3

需求:用户输入一个,判断这个数能被4整除,但是不能被100整除

    <script>
        let num = +prompt('请输入数字')
        console.log(num % 4 === 0 && num % 100 !== 0);
    </script>
字符串的优先级

Snipaste_2022-03-27_22-36-08.png 一元运算符里面的逻辑非优先级最高 逻辑与比逻辑或优先级高

表达式和语句

表达式是一组代码的集合,javaScript会将其计算出一个结果 语句是js整句或者是命令,就是做某件事

语句

顺序结构

平时写的代码,从上到下执行,就叫顺序结构

分支结构

分支结构让我们有选择性的执行想要的代码

if语句

if语句有三种使用

单分支

    <script>
        let num = +prompt('请输入数字')
        if(num > 300){
            document.write('真棒')
        }
    </script>

满足条件就执行代码,不满足就不执行

双分支

    <script>
        let num = +prompt('请输入数字')
        if(num > 300){
            document.write('真棒')
        } else {
            document.write('真菜')
        }
    </script>

满足条件就执行上行代码,不满足就执行下面的代码

多分支

    <script>
        let num = +prompt("输入时间");
        if(num < 12 && num > 20){
            document.write('上午好')
        }else if(num >= 12 && num < 18){
            document.write('下午好')
        }else {
            document.write('晚上好')
        }
    </script>

三元运算符

条件 ?满足条件执行的代码 : 不满足条件执行的代码(该方法一般拿来取值)

案例4

用户输入2个数,控制台输出最大的值

    <script>
        let num1 = +prompt('数值1');
        let num2 = +prompt('数值1');
        num3 = (num1 > num2 ? num1 : num2);
        console.log(num3)
    </script>
案例5

需求:用户输入1个数,如果数字小于10,则前面进行补0, 比如 09 03 等

    <script>
        let num = +prompt('数值');
        num2 = (num < 10 ? '0' + num : num);
        console.log(num2);
    </script>
案例6

需求:用户输入2个数字,然后输入 + - * / 任何一个,可以计算结果

    <script>
        let num1 = +prompt('数值1');
        let num2 = +prompt('数值1');
        let num3 = prompt('符号');
        if(num3 === '+'){
            console.log(num1 + num2)
        }else if(num3 === '-'){
            console.log(num1 - num2)
        }else if(num3 === '*'){
            console.log(num1 * num2)
        }else if(num3 === '/'){
            console.log(num1 / num2)
        }
    </script>