美文网首页
关于“ | ”、“ & ”、“ || ”、“ && ”棍子肉丸

关于“ | ”、“ & ”、“ || ”、“ && ”棍子肉丸

作者: Primers | 来源:发表于2017-10-14 13:59 被阅读0次

    这几个符号,是Js中的运算符号,插入到代码中,会进行相对的运算。

    首先做一个区分,

    “ | ”和“ || ”,在中文中可以理解成“或”,左边或右边成立,就成立。
    “ & ”和“ && ”,在中文中可理解成“且”,左边且右边成立,才成立。

    “ | ”和“ & ”进行的是位运算,是针对数值进行的,会把条件转化成数值来运算,返回的结果也是数值。即使运算的条件和结果是true或者false,结果也会对应的变成1或0。

    “ || ”和“ && ” 进行的是逻辑运算,即对语句进行判断,其返回的结果是true或false。并且具有短路性质:只要一边成立(或不成立)的情况下,可直接忽略另一边,不再进行计算,而产生结果。

    下面举个栗子。借用一下chelseayin的图片哈哈。

    • 第一个栗子,“ 4 | 5” 和 “ 4 & 5 ” 。
      由于是位运算,所以两边的语句会转化成二进制,像数字4就会转化成100,数字5就会转化成101,而且true和1、false和0是互相转换的。
    第三位 第二位 第一位
    4转成二进制→ 1 0 0(false)
    5转成二进制→ 1 0 1(true)
    “ | ” 运算→或 1 0 1(true)
    “ & ” 运算→且 1 0 0(false)

    由上面可见“ | ”运算的结果为101,转换回十进制就是5,所以结果输出5。
    而“ & ”的运算结果是100,转换回十进制的结果是4,所以输出结果是4。

    • 栗子二号,“ || ”和“ && ”,没错其实并没有栗子
      但是,他们两个有短路性,即:
      • 在“ || ”“ 或 ”判断中,只要从左开始遇到一个语句成立,整个判断的结果就是成立,不必判断后面的语句,当左边不成立时才接着往下判断。
      • 在“ && ”“ 且 ”判断中,只要从左开始遇到一个语句不成立,整个判断结果就是不成立,不必判断后面的语句,当左边成立时才接着往下判断。



    Wait me Back

    相关文章

      网友评论

          本文标题:关于“ | ”、“ & ”、“ || ”、“ && ”棍子肉丸

          本文链接:https://www.haomeiwen.com/subject/kmvxuxtx.html