【转,未整理】

1、逻辑非(!)

如果一个操作数是一个对象,返回true;

如果一个操作数是一个空字符串,返回false;

如果一个操作数是一个非空字符串,返回false;

如果一个操作数是一个数值0,返回false;

如果一个操作数是任意的非零字符,返回true;

如果一个操作数是null,返回false;

如果一个操作数是NaN,返回false;

如果一个操作数是undefined,返回true;

2、逻辑与(&&)

(1)对于布尔值,逻辑与是非常简单的,只要有一个false,就返回false;

(2)对于不是布尔值的情况则:

如果第一个操作数是对象,则返回第二个数

如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;

如果第两个操作数都是对象,则返回第二个数操作数

如果有一个操作数是null,则返回null

如果有一个操作数是NaN,则返回第NaN

如果第一个操作数是undefined,则返回unfined

上面确实难记,举例子来论证下会更方便记住

var obj={};   var a=(obj && null); alert(a) //null

var obj={};   var a=(null && obj); alert(a) //null

var obj={};   var a=(obj && undefined); alert(a) //undefined

var obj={};   var a=(undefined && obj); alert(a) //undefined

var obj={};   var a=(obj && NaN); alert(a) //NaN

var obj={};   var a=(NaN && obj ); alert(a) //NaN

var obj={};var obj2={} ;  var a=(obj && obj2); alert(a==obj2) //true

对于逻辑与的短路问题:

举例1

<script type="text/javascript">

var found=true;var result=(found && someUdefinedVariable);alert(result);//显示someUdefinedVariable
  //例子中的found为true,所以会对someUdefinedVariable继续求值,但是该变量未定义,所以会提示错误

</script>

举例2

<script type="text/javascript">

var found=false;var result=(found && someUdefinedVariable);alert(result);//显示false
  //例子中的found为false,所以第一个操作数就已经能够决定结果,就不会在对第二个操作数求值

</script>

ps:对于逻辑与,如果第一个操作数十false,无论第二个操作数是什么,结果都不可能在世true

3、逻辑或(||)

(1)对于布尔值,逻辑或是非常简单的,只要有一个true,就返回true;

(2)对于不是布尔值的情况则:

如果第一个操作数是对象,则返第一个操作数

如果第一个操作数的求值结果为false,则返回第二个操作数

如果两个操作数都是对象,则返回第一个操作数

如果两个操作数是null,则返回null

如果两个操作数是NaN,则返回NaN

如果两个操作数是undefined,则返回undefined

例子1

<script type="text/javascript">
          var found=true;
   var result=(found || someUdefinedVariable);
    alert(result);//弹出true

//对于逻辑与,当一个为true的时候,就不会在对第二个操作数进行求职了
  </script>

js逻辑与,或,非的更多相关文章

  1. JS 逻辑

    JS 逻辑 Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). Boolean 对象 您可以将 Boolean 对象理解为一个产生逻辑值的对象包装器. Boolean ...

  2. 微信小程序-06-详解介绍.js 逻辑层文件-注册页面

    上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...

  3. [shell]shell 中| && || () {} 用法以及shell的逻辑与或非

    转自:https://www.jianshu.com/p/617c1ee1e46e | 运算符 管道符号,是unix一个很强大的功能,符号为一条竖线:"|".用法: command ...

  4. 微信小程序-05-详解介绍.js 逻辑层文件

    上一篇介绍了关于.json 的配置文件,本篇介绍关于.js 逻辑层文件 微信小程序-05-详解介绍.js 逻辑层文件 宝典官方文档: https://developers.weixin.qq.com/ ...

  5. js逻辑非同时两次使用 !!null

    今天遇到了“!!null”的写法,百度没有找到直接的解释,翻书在<javascript高级设计>P44找到了相应的解释: 同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数 ...

  6. JS 逻辑非!简单总结

    !""                  true!"aaa"          false""==false          true ...

  7. 你不得不知的逻辑或(||)与(&&)非(!)

    最近重新翻开原生JS,又得到很多不同的体会,虽然现在开发框架那么多,但很多思想都还是离不开原生的基础.今天呢,我就根据自己的学习总结一下逻辑与(&&)和(逻辑或(||)和逻辑非(!). ...

  8. JS严格模式和非严格模式的区别

    严格模式和非严格模式的区别 //f1.js 'use strice'; //整个js文件都是严格模式下执行的 var n = 1; var foo = function(){...}; //... v ...

  9. 学JS的心路历程 -非同步执行

    JS是单线程的语言,也就是说同一时间只会执行一行程序,所以如果一段程序执行过久就会造成阻塞(blocking)的现象,必须等到它结束后才能执行下一段程序. 举个例子来说,如果我们今天要买便当,但是老板 ...

随机推荐

  1. 【转】linux设备驱动程序中的阻塞机制

    原文网址:http://www.cnblogs.com/geneil/archive/2011/12/04/2275272.html 阻塞与非阻塞是设备访问的两种方式.在写阻塞与非阻塞的驱动程序时,经 ...

  2. 五个JS经典面试题

    1:Scope作用范围 1: (function() { 2: var a = b = 5; 3: })(); 4: 5: console.log(b); 什么会被打印在控制台上? 回答 上面的代码会 ...

  3. java-swing在组件中显示信息

    package com.http; import java.awt.*; import javax.swing.*; public class TestSwing2 { //创建了一个能够绘制的组件 ...

  4. arcgis for android 无法加载本地jpg影像解决办法

    因为jpg影像没有生成金子塔文件*.rrd 一个完整的JPG影像必须包括如下文件: K-50-96-(16).aux  辅助文件K-50-96-(16).jgw  坐标信息K-50-96-(16).j ...

  5. Javascript判断是否是ipad的浏览器

    ipad用的是Safari Mobile浏览器,访问的UA为: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/5 ...

  6. mysql数据库中查询汉字的拼音首字母

    本人提供的方法有如下特点: 1.代码精简,使用简单,只要会基本的SQL语句就行2.不用建立mysql 函数等复杂的东西3.汉字库最全,可查询20902个汉字 方法如下: 1.建立拼音首字母资料表Sql ...

  7. [Papers]MHD, $\p_3\pi$, Lebesgue space [Zhang-Li-Yu, JMAA, 2013]

    $$\bex \p_3\pi\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=2,\quad \frac{3}{2}\leq q\leq 3 ...

  8. Jquery图片随滚动条加载

    很久以前的写的Jquery图片随滚动条加载,现在不是什么新技术,应用也很广泛,大大提高图片多的页面打开速度! 有需要的朋友看看吧!有什么意见或建议欢迎留言交流! Demo.html  源码: < ...

  9. Python超级程序员使用的开发工具

    我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发? 你将来的计划是什么? 有什么给Py ...

  10. ps 图片提取线稿方法2种 转