• 欢迎访问交通人网站!
  • 分享一款小游戏:信任的进化
  •    发表于7年前 (2017-08-27)  开发随记 |   抢沙发  451 
    文章评分 1 次,平均分 5.0

    一、先来说说 ||(逻辑或),从字面上来说,只有前后都是 false 的时候才返回 false,否则返回 true。

    但是,从深层意义上来说的话,却有另一番天地,试下面代码:

    显然,我们知道,前面 0 意味着 false,而后面 1 意味着 true,那么上面的结果应该是 true,而事实返回的结果是 1 。再看下面代码:

    我们知道,前面 2 是 true,后面 1 也是 true,那返回结果又是什么呢?

    测试结果是 2,继续看:

    同样,前面 'a' 是 true,后面 1 也是 true,测试结果是 'a',下面:

    由上,我们知道前面 '' 是 false,后面 1 是 true,而返回结果是 1。再看下面:

    前面 'a' 是true,而后面 0 是 false,返回结果是 'a',继续下面:

    前面 'a' 是 true,后面 'b' 是 true,返回结果是 'a',我们继续下面:

    前面 '' 是 false,后面 0 同样是 false,返回结果是 0。

    前面 0 是 false,后面 '' 是 false,返回结果是 ''。

    这就意味:

    1、只要 “||” 前面为 false,不管 “||” 后面是 true 还是 false,都返回 “||” 后面的值;

    2、只要 “||” 前面为 true,不管 “||” 后面是 true 还是 false,都返回 “||” 前面的值。

    二、下面说说 &&(逻辑与),从字面上来说,只有前后都是 true 的时候才返回 true,否则返回 false。

    然后,根据上面经验,我们看看 “&&” 号前后,不单单是布尔类型的情况。

    结是返回 '',“&&” 前面 '' 是 false,后面是 1 是 true。

    结是返回 '',“&&” 前面 '' 是 false,后面是 0 也是 false。

    结是返回 1,“&&” 前面 'a'? 是 true,后面是 1 也是 true。

    结是返回 0,“&&” 前面 'a' 是 true,后面是 0 是 false。

    结是返回 '',“&&” 前面 'a' 是 true,后面是 '' 是 false。

    结是返回 0,“&&” 前面 0 是 false,后面是 'a' 是 true。

    结是返回 0,“&&” 前面 0 是 false,后面是 '' 也是 false。

    这意味着:

    1、只要 “&&” 前面是 false,无论 “&&” 后面是 true 还是 false,结果都将返 “&&” 前面的值;

    2、只要 “&&” 前面是 true,无论 “&&” 后面是 true 还是 false,结果都将返 “&&” 后面的值。

    让我们总结一下:

    1、只要 “||” 前面为 false,无论 “||” 后面是 true 还是 false,结果都返回 “||” 后面的值;

    2、只要 “||” 前面为 true,无论 “||” 后面是 true 还是 false,结果都返回 “||” 前面的值;

    3、只要 “&&” 前面是 false,无论 “&&” 后面是 true 还是 false,结果都将返 “&&” 前面的值;

    4、只要 “&&” 前面是 true,无论 “&&” 后面是 true 还是 false,结果都将返 “&&” 后面的值。

    由上两个测试可知,逻辑运算符,“||” 和 “&&” 都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。

    需要说明的是 “&&” 的优先级是高于 “||” 的,下面测试:

    返回结果是 1。

    根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。

    根据上面我们得出的结论(1),(1||'a')将返回前面的值 1,(1&&2) 根据结论 (4) 应该返回后面的值 2。这显然不对,由此可知 “&&” 的优先级是高于 “||” 的。

    打赏
    微信
    支付宝
    微信二维码图片

    微信 扫描二维码打赏

    支付宝二维码图片

    支付宝 扫描二维码打赏

     

    本文转载自javascript逻辑运算符“||”和“&&”,由交通人整理,转载请注明出处来自http://www.hijtr.com/javascript-or-and/

    交通人博客是交通人工作室(JTR Studio)建立的交通人系列网站之一,是交通人工作室的主阵地,旨在整合和分享交通行业相关资讯,具体包括但不限于行业新闻、行业动态,以及行业相关规范、书籍、报告和软件等资源。

    发表评论

    表情 格式

    *

    暂无评论

    
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享