原来逻辑运算符的原理是这样的

一、JavaScript里的逻辑运算符有“&&”、“||”和“!”,分别是“与”、“或”、“非”,经常出现在if语句中,分别有以下特点:

  1. “&&”两边的值同时为真的时候,这个表达式表示布尔值 “true”,只要有任意一边是“false”,则整个表达式为false。(比较严格
  2. “||”只要两边有任意一个值为真,表达式的值就是“true”。两边全是真,返回“true”,两边全是假,返回“false”。(比较宽容
  3. “!”后面跟一个表达式,后面的值为真时,返回“false”,否则,返回“true”

二、书上是这样说的,但是谁让咱是新手,总喜欢乱搞,逻辑运算符偏不放在if语句里面,直接输出,看能出现什么效果

有以下代码:

  var a = 1&&2
  console.log(a)

有了前面的结果,很轻易可以得出 这个是输出“true”的结果,但是很不辛,输出的是“2”。为了搞清楚到底发生了什么。又试了几次:

  var a = 3&&5
  console.log(a)

上面输出“5”

  var a = 10&&8
  console.log(a)

上面输出“8”

  var a = 10&&0
  console.log(a)

上面输出 “0”;

  var a = 0&&2
  console.log(a)

上面输出 “0”

  var a = undefined&&2
  console.log(a)

上面输出“undefined”
反复试了几次,终于搞清楚了背后的原因

&&逻辑运算符的原理

  • 逻辑运算符从左往右执行
  • 当第一个表达式布尔值为真时,直接输出第二个表达式本身(注意不是表达式的布尔值,而是表达式本身的值)
  • 当第一个表达式布尔值为“false”时,直接输出第一个表达式本身(注意不是表达式的布尔值,而是表达式本身的值)
  • 当有连续的几个&&同时运算时,从前往后看,步骤和上面一样
  • 当我们使用if语句时,因为它只能接受一个布尔值,所以会有一个自动转化的过程:
undefined,
 NaN, 
"",
 0,
false

这几个值会转换成“false”,其他类型的值全部全换成“true”;

||逻辑运算符的原理

    var a = 0||3||4
    console.log(a)

上面的运算输出“3”

  • 原理:||运算符从前往后算,若第一个值得布尔值是“false”,则看第二个,如果第二哥值布尔值为“true”,直接输出第二个值的值;如果有两个以上的值,则重复上面的步骤,直到遇到第一个为“true”的值,输出那个;若所有值全为false,则输出false

!逻辑运算符的原理

“!”运算符在执行时,先把后面的表达式的值转换成布尔值,在取反。false变成true,true变成false

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 运算符 是可以检查,修改或者组合值的特殊符号或者短语。例如,加法运算符(+)将两个数相加,像let i = 1 +...
    BoomLee阅读 1,865评论 0 4
  • 今天总结:收集排程执行 “青蛙”,指的是通过GTD的思想,将引发大脑关注的所有事务收集、分清轻重缓急之后,挑选出来...
    CSir205阅读 384评论 0 0
  • 【目录】 这是《落叶》文集里第25片落叶,希望你能喜欢,不为别的,只为这份坚持。 13年测试经验 + 10年项目管...
    秋之川阅读 192评论 0 0
  • 人不能过于高估自己,但也不能看低自己,今天跟Coco 姐聊天,让我重新开始思考我到底想要过什么样的生活? Coco...
    小芳Funny阅读 176评论 0 0