比较运算/关系符运算~全等/逻辑运算~与&& 或|| 非!/ 短路运算/特殊数字-NaN和isNaN判定NaN/字符串比较规则/如何交换两个变量的值/ 转换数字类型/布尔/隐式转换

关系运算~比较运算

    <script>
        // 关系运算:值比较

        // 所有的比较运算得到的结果都是布尔类型:true和false
        let res = 1 > 2
     

        console.log(1 > 2)
        console.log(2 > 1)

        console.log(2 > 2)
        console.log(2 >= 2)

        console.log(1 == '1')       // true
        // 本质:系统将字符串“1”变成了数字1(类型转换)

        console.log(1 == true)      // true(true在系统内部是用1来存储)
        console.log(0 == false)     // true

        // 值比较:不在乎类型
    </script>

关系符运算~全等

    <script>
        // 全等:比值 也要比 类型
        console.log(5 === '5')      // false

        console.log(5 !== '5')      // true


        // 用户输入
        let u = prompt('请输入一个数字')
        console.log(u === 5)        // false

        // 值比较和全等比较选择

        // 1. 如果要求严格:一定是用全等
        // 2. 不严格:值比较
        //      只能值比较:大于 小于
    </script>

注意:
◆ ===:全等,左边的值和类型与右边相同,得到true,反之false ◆ !==:不全等,左边的值和类型只要有一个与右边不同,得到true,反之false//

逻辑运算~与&& 或|| 非!

    <script>
        // 逻辑运算:与&& 或|| 非!

        // &&:同真则真,其他为假
        console.log(50 > 18 && 50 > 20) // true
        console.log(50 > 18 && 50 > 50) // false

        // 未来:if(50 > 18 && 50 > 20)

        // ||:同假为假,其他为真

        // 什么情况下能成为迪丽热巴的男朋友
        // 要么真爱  要么 世界上只有我一个男人
        // let love = prompt('迪丽热巴喜欢我吗?请输入是或者否')
        let man = 1
        // console.log(love == '是' || man == 1)   // true
        man = 3000000000
        // console.log(love == '是' || man == 1)   // 不确定:true 或者 false

        // !:取反
        console.log(!true)      // false
        console.log(!false)     // true

注意:
◆ &&:同真则真,其他为假/ ◆ ||:同假则假,其他为真// ◆ !:真假假真

逻辑运算~短路运算

    <script>
        // 逻辑与 短路运算
        let a = 1;
        let b = 2;
        //第一个值为假  则 直接中断运算
        a > 1 && (b += 2);
        console.log(b);// 值为 2
        //第一个值为真  则 返回第二个值
        a > 0 && (b += 2);
        console.log(b);// 值为 4

        //逻辑或 短路运算
        let c = 1;
        let d = 3;
        //第一个值为真 则 直接中断运算
        c > 0 || (d += 2);
        console.log(d);// 值为 3
        //第一个值为假 则 返回第二个值
        c > 2 || (d += 2);
        console.log(d);// 值为 5


        // 总结:逻辑与 和  逻辑或的结果,不一定是布尔值。要看他两个左右两边的值结果到底是什么、
    </script>

特殊数字-NaN和isNaN判定NaN

    <script>
        // NaN:Not a Number,不是一个数字
        // 凡是不是数字的东西转成数字最终结果:NaN
        console.log('1' - 1)        // 0

        console.log('a' - 1)        // NaN

        // NaN的特性
        // 1. 不能参与运算:都是NaN
        console.log(NaN + 1)        // NaN

        // 2. 不能参与比较:都是false
        console.log(NaN < NaN + 1)  // false
        console.log(NaN == NaN)     // false
        // 第一个NaN : ‘a’ - 1
        // 第二个NaN : ‘a’ - 2 

        // 3. 系统提供了一个函数:isNaN(内容)
        // 不是数字:true
        // 是数字:false
        console.log(isNaN('a'))     // true
        console.log(isNaN(1))       // false

        console.log(isNaN('1'))     // false
        // 在程序里面:绝大部分时候是不区分数字是否带引号:但是在 + 号面前

        // 如和判定用户输入的是不是数字?用户输入prompt()一定是字符串:只能用isNaN()判定

    </script>

注意:
◆ NaN代表一切不是数字的数字
◆ NaN与任何数据的运行结果都是NaN
◆ NaN与任何数据的判定结果都是false
◆ isNaN()才能判定NaN

字符串比较规则

    <script>
        // 字符串:不比长度

        console.log('z' < 'abcdefg')
        // 1. 字符串与长度无关

        console.log('a' == 'A')
        // 2. 字符串比较区分大小写(ASCII值不相同)
        // A == 65  a == 97

        console.log('abc' < 'abd')
        // 3. 一个一个的位置进行比较:直到有一个位置比出结果就结束

        // ? 中 和 国 谁大?
        console.log('中' > '国')
        console.log('中' < '国')
        console.log('罪' < '过');

        // 中国不存在比较关系
        // 1. 有的逻辑是:比拼音  中 应该 大于 国
        // 2. 中文有自己的编码规则:\u 涉及到编码顺序
    </script>

如何交换两个变量的值

    <script>
        var temp;
        var apple1 ='红苹果';
        var apple2 ='烂苹果';
        temp = apple1;
        apple1 = apple2;
        apple2 = temp;
        console.log(apple1);
        console.log(apple2);
    </script>

转换数字类型

    <script>
        //1parselnt (变量) 可以把 字符型的转换为数字型 得到的是整数
        // console.log(parselnt(age));
        console.log(parseInt('3.14'));//3取整
        console.log(parseInt('120px'));//120 会去掉px 这个单位
        console.log(parseInt('rem120px'));// NaN
        //2.parseFloat(变量) 可以把 字符型的转换为数字型 得到的是小数点 浮点数。
        console.log(parseFloat('3.14'));// 3.14
        console.log(parseFloat('120px'));// 120 会去掉px 这个单位
        console.log(parseFloat('rem120px'));// NaN
    </script>

数据类型转换~布尔

    <script>
        // Boolean()

        // 只有7种转false,其他都是true

        console.log(Boolean(0))
        console.log(Boolean(0.0))
        console.log(Boolean(NaN))
        console.log(Boolean(''))
        console.log(Boolean(undefined))
        console.log(Boolean(null))
        console.log(Boolean(-0))



        console.log(Boolean(-1))
        console.log(Boolean(Infinity))

        // 转布尔使用较多的:系统内部
        // if()  for()  while() do-while() !
    </script>

隐式转换

    <script>
        // 隐式转换场景

        // 1. 转数字
        console.log('1' - 1)    // 算术运算符:+除外
        console.log(true > 0)   // 有数字参与的比较

        // 在数据前面使用 + 号
        // let u = +prompt('请输入数字')
        // console.log(u, typeof u)

        // 2. 转字符串:有字符串参与的 + 运算
        console.log('1' + 1)

        // 3. 转布尔:! 逻辑非
        console.log(!1)

        // 转布尔隐式转换挺多:if() while() for()...

        // 应该是让系统转好还是主动写代码转

        // 主动转:把控代码的安全(建议),让代码的可读性增加
        // JS中,可以让系统自动转

        // 补充:类型转换不会改变数据本身
        let s1 = '123'
        console.log(Number(s1))
        console.log(s1)     // 不会改变数据本身

        // 如果要改变数据本身?改完之后重新赋值
        s1 = Number(s1)
        console.log(s1);
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值