欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript 让你意外的瞬间(逻辑运算符)

程序员文章站 2022-06-28 18:50:20
JS中的逻辑运算符呢,emmm,是很让我惊讶的。。。因为是真的踩到过坑。。。这里不说“!”非运算,因为它和C或者JAVA应该不会差别很大,这里主要说另外两个。1、在之前的学习中,我觉得不管哪门语言,&&运算符的返回值,应该一定为boolean吧。但在JS中,不这么认为,这个时候JS变得高大上起来了。。。。那,如果&&的两个操作数都为boolean值得话,那他和JAVA是没有区别的。但如果,如果!有一个操作数,不为布尔值,那么它的返回结果就不一定是布尔值。我们...

JS中的逻辑运算符呢,emmm,是很让我惊讶的。。。
因为是真的踩到过坑。。。
这里不说“!”非运算,因为它和C或者JAVA应该不会差别很大,这里主要说另外两个。

1、
在之前的学习中,我觉得不管哪门语言,&&运算符的返回值,应该一定为boolean吧。
但在JS中,不这么认为,这个时候JS变得高大上起来了。。。。

那,如果&&的两个操作数都为boolean值得话,那他和JAVA是没有区别的。
但如果,如果!
有一个操作数,不为布尔值,那么它的返回结果就不一定是布尔值。
我们来看代码:

    <script>
        console.log(1&&2);
    </script>

这行代码,返回的结果是2!
JavaScript 让你意外的瞬间(逻辑运算符)
那我多试几个:

    <script>
        console.log(1&&2);
        console.log("123"&&true);
        console.log(3&&"123");
        console.log("4"&&undefined);
        console.log(5&&false);
    </script>

打印出来:
JavaScript 让你意外的瞬间(逻辑运算符)
我惊了,你呢。。。。
JavaScript 让你意外的瞬间(逻辑运算符)
仔细看的话,结论是什么:
如果第一个操作数,是这种实例化的(你懂我的意思吧,我有点描述不出来),那么就返回第二个操作数。

那我们现在看另一种情况的:

    <script>
        console.log(null&&123);
        console.log(NaN&&"123");
        console.log(undefined&&false);
    </script>

打印一下:
JavaScript 让你意外的瞬间(逻辑运算符)
现在我只能用WC来形容。。。。
结论是,如果第一个操作数是null,undefined,NaN,那么返回值就是第一个操作数。

最后我们再来看一下另一个代码:

    <script>
        console.log(false&&123);
        console.log(true&&123);
    </script>

打印结果:
JavaScript 让你意外的瞬间(逻辑运算符)
结论:
如果第一个操作数是false,返回false。
如果第一个操作数是true,返回第二个操作数。

当然这里所有的情况都是在没有错误的情况下啊。。。。。

2、
现在我们再来看一下||运算符,可能就会清晰一点了。

我们就拿刚才的方法来尝试:

    <script>
        console.log(1||2);
        console.log("123"||true);
        console.log(3||"123");
        console.log("4"||undefined);
        console.log(5||false);
    </script>

打印出来:
JavaScript 让你意外的瞬间(逻辑运算符)
嘶,和&&不一样的是:如果第一个操作数是实例化对象的话返回的是第一个操作数

再看另一种情况:

    <script>
        console.log(null||123);
        console.log(NaN||"123");
        console.log(undefined||false);
    </script>

打印出来:
JavaScript 让你意外的瞬间(逻辑运算符)
嘶,也不一样的是:如果第一个操作数是null,undefined,NaN,那么就返回第二个操作数;

再来看一下最后一种情况:

        <script>
            console.log(false || 123);
            console.log(true || 123);
        </script>

看一下结果:
JavaScript 让你意外的瞬间(逻辑运算符)
嘶,结论:
如果第一个操作数是false,返回第二个操作数。
如果第一个操作数是true,返回true。

最后的话,是不是发现了,记住&&的特点,||和它反着来就行了。。。。
所以JS在这里弄的这么麻烦,我也不太理解,反正就是希望少踩坑吧。。。。

OK,关于逻辑运算符就说这些,好玩吧,也欢迎补充。。。。。

本文地址:https://blog.csdn.net/weixin_46726346/article/details/107899325