【五】JavaScript之运算符

【五】JavaScript之运算符

【1】算术运算符

运算符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取模/求余数
** 幂运算
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    input{
        width: 40px;
    }
    </style>
</head>
<body>
    <input type="text" name="num1" value="0">
    <select name="oprator">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
        <option value="%">%</option>
        <option value="**">**</option>
    </select>
    <input type="text" name="num2" value="0">
    =
    <input type="text" name="result" value="0">
    <button id="calc">计算</button>
<script>
    // 先获取id=calc的元素
    // document.querySelector("css选择符")
    var calc = document.querySelector('#calc');
    var num1 = document.querySelector('input[name="num1"]');
    var num2 = document.querySelector('input[name="num2"]');
    var oprator = document.querySelector('select[name="oprator"]');
    var result = document.querySelector('input[name="result"]');
    // 绑定点击效果
    calc.onclick = function(){
        console.log("开始计算", `${num1.value}${oprator.value}${num2.value}=`);
        if(oprator.value === "+"){
            // 加法运算
            result.value = parseFloat(num1.value) + parseFloat(num2.value);
        }else if(oprator.value === "-"){
            // 减法运算
            result.value = num1.value - num2.value;
        }else if(oprator.value === "*"){
            // 乘法运算
            result.value = num1.value * num2.value;
        }else if(oprator.value === "/"){
            // 除法运算
            result.value = num1.value / num2.value;
        }else if(oprator.value === "%"){
            // 取模运算
            result.value = num1.value % num2.value;
        }else if(oprator.value === "**"){
            // 幂运算
            result.value = num1.value ** num2.value;
        }

    }
</script>
</body>
</html>

【2】赋值运算符

运算符 描述 例子:
= 把右边的数据赋值给左边的变量 a = 29;
+= 在变量原有数据的基础上,加上/拼接右边的值,赋值给左边的变量 a +=1; 相当于 a=a+1
-= 在变量原有数值的基础上,减去右边的值,赋值给左边的变量 a -=1; 相当于 a=a-1
*= 在变量原有数值的基础上,乘以右边的值,赋值给左边的变量 a *=2; 相当于 a=a*2
/= 在变量原有数值的基础上,除以右边的值,赋值给左边的变量 a /= 3; 相当于 a=a/3;
%= 在变量原有数值的基础上,除以右边的值,取余数,赋值给左边的变量 a %= 3; 相当于 a=a%3;
**= 在变量原有数值的基础上,对右边的值进行幂运算,赋值给左边的变量 a **= 3; 相当于 a=a**3;
++ 在变量原有数值的基础上,+1,赋值给左边的变量 ++使用的对象必须是变量,不能是字面量
-- 在变量原有数值的基础上,-1,赋值给左边的变量 --使用的对象必须是变量,不能是字面量
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    /*
    = 把右边的数据赋值给左边的变量
    */
    // var age = 17;
    // console.log(age);
    // age =18;
    // console.log(age);


    /*
    += 在变量原有数据的基础上,加上/拼接右边的值,赋值给左边的变量
    */
    // var num1 = 10;
    // num1 += 2;
    // // num1 = num1 + 2;  // 表达式遇到=号时,会先运行=号右边的代码
    // console.log(num1)

    /*
    自增运算符
    ++ 在变量原有数值的基础上,+1,赋值给当前变量
    */
    var num2 = 10;
    console.log(++num2); // 11,++写在变量左边,前自增,先进行变量+1,然后运行当前一句代码

    var num3 = 10;
    console.log(num3++); // 10,++写在变量右边,后自增,先运行当前一句代码,运行完以后,才进行变量+1
    console.log(num3);   // 11

    /*
    自减运算符
    -- 在变量原有数值的基础上,-1,赋值给当前变量
    */
    var num4 = 10;
    console.log(--num4); // 9,--写在变量左边,前自减,先进行变量-1,然后运行当前一句代码

    var num5 = 10;
    console.log(num5--); // 10,--写在变量右边,后自减,先运行当前一句代码,运行完以后,才进行变量-1
    console.log(num5);   // 9
    
    
    // 以下代码会报错!!
    // console.log(++3);
    
</script>
</body>
</html>

【3】比较运算符

  • 比较运算的最终结果都是布尔值。
运算符 描述
== 判断左右两边数据的值是否相等,类型不一样也没关系
=== 判断左右两边数据的值是否相等并类型是否同时也一致,也叫全等
> 判断左边的值是否大于右边的值
>= 判断左边的值是否大于等于右边的值
< 判断左边的值是否小于等于右边的值
<= 判断左边的值是否小于等于右边的值
!= 判断左右两边的值是否不相等
!== 判断左右两边的值是否不相等或者类型不一样,不全等
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    /**
     * == 判断两边的变量的值是否相等,不判断数据类型
     */
    var num1 = 1;
    var num2 = 2;
    var num3 = true;
    var num4 = "1"
    var num5 = 0;
    var num6 = "0"
    console.log(num1 == num2); // false
    console.log(num3 == num1); // true
    console.log(num4 == num1); // true
    console.log(num5 == num6); // true
    console.log(num5 == false); // true
    // 很神奇,num6转换成布尔值,是true,而num6与true直接判断,结果不等
    console.log(num6 == true); // false
    console.log(Boolean(num6)); // true
    console.log("" == false); // true
    console.log("" == undefined); // false
    console.log(false == undefined); // false

    /**
     * === 判断两边的值是否相等并且数据类型是否一样。
     */
    console.log("10" == 10); // true
    console.log("10" === 10); // false

    /**
     * !== 不全等,只要两边的值不同或者类型不一样则返回true
     */
    console.log("10" != 10); // false
    console.log("10" !== 10); // true
</script>
</body>
</html>

【4】逻辑运算符

  • 主要完成多个条件的组合判断。
运算符 描述
&& and,且,并且 左边为假,拿左边,左边为真,拿右边。
|| or,或,或者 左边为真拿左边,左边为假拿右边。
! not ,非,取反 非真既假,非假既真
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    /**
     * 真且真,返回真 [不管任何内容,都是返回后面的,短路现象]
     * 真且假,返回假 [不管任何内容,都是返回后面的,短路现象]
     * 假且真,返回假 [不管后面是任何内容,直接不执行,返回左边条件结果]
     * 真或假,返回真 [不管后面是任何内容,直接不执行,返回左边条件结果]
     * 假或真,返回真 [不管任何内容,都是返回后面的,短路现象]
     * 假或假,返回假 [不管任何内容,都是返回后面的,短路现象]
     * 非真即假,非假即真
     */


    console.log( true && true )      // true
    console.log( 1 == 1 && 2 == 2 )  // true
    console.log( 1 && 2 )            // 2
    console.log( true && false )  // false
    console.log( true && 2 )      // 2
    console.log( 1 && 0 )         // 0

    console.log( true || false )  // true
    console.log( 1 || 0 )         // 1
    console.log( false || false ) // false
    console.log(  0 || '结果' )       // '结果'

    console.log( !true )          // false
    console.log( !100 )           // false
    console.log( !false )         // true
    console.log( !'' )            // true


    // 语句短路了,根据判断status的布尔值,判断是否要计算赋值
    var age = 17
    var status = ""; // 此处除了""可以当成false使用,其他的false,0,null,undefined都不能被当成false使用,隐式转换带来的不好影响
    var ret1 = status || (age=3);
    console.log(ret1, `age=${age}`);
</script>
</body>
</html>

【5】三元运算符

运算符 描述
条件?true:false 根据条件的结果判断,条件结果为true,则返回冒号左边的结果,否则返回冒号右边的结果
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>
    /**
     * 条件?true:false
     */
    var age = 21;
    var ret = age >= 18?"成年人":"未成年人";
    console.log(ret);


    /**
     // python中的三元表达式
     age = 18
     ret = "成年人" if age >= 18 else "未成年人"
     print(ret)
     */
</script>
</body>
</html>

【6】运算符的优先级

  • 通过小括号提升表达式的优先级。

posted @ 2023-07-04 14:18  Chimengmeng  阅读(17)  评论(0)    收藏  举报