文档章节

转 js 与或非

rikkilovelife
 rikkilovelife
发布于 2014/06/12 10:34
字数 727
阅读 55
收藏 0
点赞 0
评论 0

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>


© 著作权归作者所有

共有 人打赏支持
rikkilovelife
粉丝 1
博文 23
码字总数 11842
作品 0
杭州
网页/平面设计
打开网站被挂马跳转到博彩页面 解决办法

从百度这里点击进去,我的网站会直接跳转到赌博网站上去,我一开始以为 是百度有问题了,我再从其他搜索引擎试了一下,360搜索,搜狗搜索点击进去, 都会自动跳转到赌博网站上去,难不成是我...

网站安全
06/02
0
0
wabacus框架中点击按钮不反应、出现js错误的处理经验

问题描述:经常出现点击按钮后,页面无任何反应。此时用firefox的firebug可以看到通常是出现了js错误。 分析js的错误提示信息,如果是自己写的代码,改好即可。如果是类似于 "ReferenceErro...

张伟光
2013/07/06
0
1
百度插件uaredirect.js电脑版跳转到手机版网站

一、介绍 这段时间,有好多朋友问我,跳转到手机版的那个JS是怎么写的。其实这个JS也不是我写的,是百度siteapp下的一款跳转的产品,使用起来很方便。你可以用这款JS跳转到手机版,也可以跳转...

lovethe51cto
06/26
0
0
JS 返回上一步(退回上一步上一个网页)

链接式: <a href="javascript:history.go(-1)">返回上一步</a> <a href="<%=Request.ServerVariables("HTTP_REFERER")%>">返回上一步</a> 按钮式: <INPUT name="pclog" type="button" valu......

Carl_
2014/08/04
0
0
Javascript 返回上一页 返回下一页

Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.forward()返回下一页 4. window.history.go(返回第几页,也可以使用访问过的U...

Fx_demon
2014/12/31
0
0
标签中的href和onclick的区别

这样写是为了让这个链接不要链接到新页面转而执行一段js代码。 和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:function()...

君子之耀
2013/12/09
0
0
[javascript]实现汉字Unicode编码的转换

js文件中,有些变量的值可能会含有汉字,画面引入js以后,有可能会因为字符集的原因,把里面的汉字都变成乱码。后来发现网上的一些js里会把变量中的汉字都表示成”u“开头的16进制编码,这样...

jn_王文強
2013/06/29
0
2
从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN...

fengdaoting
07/04
0
0
Javascript实现页面跳转的几种方式分享

这篇文章介绍了Javascript实现页面跳转的几种方式,有需要的朋友可以参考一 下 - 第一种: 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.location.hre...

夏日晚晴天
2013/10/26
0
2
IE6下window.location.href 不能正常跳转

由于最近Chrome用的比较多,一般都是在用Chrome做测试,没遇到什么问题 最近项目上线,用IE6小小测试了下,问题来了。先看代码: <a href="javascript:void(0);" onclick="hrefSearchUser('$...

walala_Lee
2014/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
7分钟前
0
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
12分钟前
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
50分钟前
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
1
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
7
0
Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
今天
1
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
今天
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部