alert(1&&2)的输出问题
此文章转载自http://blog.csdn.net/xiaotao_css/article/details/61940664
一、先来说说 ||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。
alert(true||false); // true
alert(false||true); // true
alert(true||true); // true
alert(false||false); // false
但是,从深层意义上来说的话,却有另一番天地,试看下面代码:
alert(0||1);
显然,我们知道,前面0意味着false,而后面1意味着true,那么上面的结果应该是true,而事实返回的结果是1。再看下面代码:
alert(2||1);
我们知道,前面2是true,后面1也是true,那返回结果又是什么呢?测试结果是2,继续看:
alert('a'||1);
同样,前面'a'是true,后面1也是true;测试结果是'a',下面
alert(''||1);
由上,我们知道前面''是false,后面1是true,而返回结果是1。再看下面
alert('a'||0);
前面'a'是true,而后面0是false,返回结果是'a',继续下面
alert('a'||'b');
前面'a'是true,后面'b'是false,返回结果是'a',我们继续下面
alert(''||0);
前面''是false,后面0同样是false,返回结果是0
alert(0||'');
前面0是false,后面''是false,返回结果是''
这就意味
1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
----------------------------------------------------------------------------------------------------------
二、下面说说&&(逻辑与),从字面上来说,只有前后都是true的时候才返回true,否则返回false。
alert(true&&false); // false
alert(true&&true); // true
alert(false&&false); // false
alert(false&&true); // false
然后,根据上面经验,我们看看“&&”号前后,不单单是布尔类型的情况。
alert(''&&1);
结是返回'',“&&”前面''是false,后面是1是true。
alert(''&&0);
结是返回'',“&&”前面''是false,后面是0也是false。
alert('a'&&1);
结是返回1,“&&”前面''a是true,后面是1也是true。
alert('a'&&0);
结是返回0,“&&”前面''a是true,后面是0是false。
alert('a'&&'');
结是返回'',“&&”前面''a是true,后面是''是false。
alert(0&&'a');
结是返回0,“&&”前面''0是false,后面是'a'是true。
alert(0&&'');
结是返回0,“&&”前面''0是false,后面是''也是false。
这意味着(大家牢记,这是结论,不用记上边的那些输出结果)
1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
由上两个测试可知,逻辑运算符,“||”和“&&”都是遵行短路原则,只要确定符号前面的真假,既可确定返回值。
需要说明的是“&&”的优先级是高于“||”的,下面测试:
alert(1||'a'&&2);
返回结果是1。
根据反证原理,我们假设“||”的优先级不低于“&&”(这里只所以用“不低于”,是为了同时证明等级相同的情况)。
根据上面我们得出的结论(1),(1||'a')将返回前面的值1,(1&&2)根据结论(4)应该返回后面的值2。这显然不对,由此可知“&&”的优先级是高于“||”的。
alert(1&&2)的输出问题的更多相关文章
- 简述alert和console.log的区别
生活中还是得有发现美好和差别的眼睛~~ 学习前端那么久既然还不知道alert和console.log的差别~~~~ 蓝瘦,香菇~~~ 本菜鸟一直以为alert和console.log其实是一样的用法, ...
- MVC控制下输出图片、javascript与json格式
/// <summary> /// 输出图片 /// </summary> /// <returns></returns> public ActionR ...
- 初识 Javascript.01 -- Javascript基础|输出方式、变量、变量命名规范、数据类型、
Javascript基础 1 聊聊Javascript 1.1 Javascript的历史来源 94年网景公司 研发出世界上第一款浏览器. 95年 sun公司 java语言诞生 网景公司和su ...
- 使用PrintWriter out=response.getWriter();输出script脚本时乱码解决
使用PrintWriter out=response.getWriter();输出script脚本时乱码解决 最近遇到了一个奇怪的事情,仅仅用out.print("<script ty ...
- alert(1) to win 2
function escape(s) { s = s.replace(/"/g, '\\"'); return '<script>console.log("' ...
- alert(1) to win Part Ⅰ
alert(1) to win Adobe: function escape(s) { s = s.replace(/"/g, '\\"'); return '<script ...
- angular实现统一的消息服务
后台API返回的消息怎么显示更优雅,怎么处理才更简洁?看看这个效果怎么样? 自定义指令和服务实现 自定义指令和服务实现消息自动显示在页面的顶部,3秒之后消失 1. 显示消息 这种显示消息的方式是不是有 ...
- JavaScript基础学习-函数及作用域
函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...
- cookies如何成为全局变量以及设置,删除,获取
(一)cookie机制将信息存储于用户硬盘,因此可以作为全局变量 (1)保存用户登录状态.例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供 ...
随机推荐
- UVA - 10562 Undraw the Trees(多叉树的dfs)
题意:将多叉树转化为括号表示法. 分析:gets读取,dfs就好了.注意,样例中一行的最后一个字母后是没有空格的. #pragma comment(linker, "/STACK:10240 ...
- 分享一个简单的C#的通用DbHelper类(支持数据连接池)
每次新项目的时候,都要从头去找一遍数据库工具类.这里分享一个简单实用的C#的通用DbHelper工具类,支持数据连接池. 连接池配置 <connectionStrings> <add ...
- Vulkan SDK 之 DrawCube
Waiting for a Swapchain Buffer Beginning the Render Pass Bind the Pipeline Bind the Descriptor Sets ...
- Springboot Bean循环依赖问题
参考博客原文地址: https://www.jb51.net/article/168398.htm https://www.cnblogs.com/mianteno/p/10692633.html h ...
- 转载:HTTP 请求头中的 X-Forwarded-For
本文转自:https://www.jianshu.com/p/15f3498a7fad X-Forwarded-For和相关几个头部的理解 $remote_addr 是nginx与客户端进行TC ...
- oracle11g数据库的安装
先在 Oracle官网上下载11g oracle Database 11g 第 2 版 (11.2.0.1.0) 标准版.标准版 1 以及企业版,适用于 Microsoft Windows (x6 ...
- opencv 矩阵操作
OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...
- EUI库 - 容器
eui.UILayer UILayer是Group的子类它只有一个功能,到放到场景上后,宽高永远和场景宽度一致 Group Group 是自动布局的容器基类.如果包含的子项内容太大需要滚动显示 ...
- Arduino --structure
The elements of Arduino (C++) code. Sketch loop() setup() Control Structure break continue do...whil ...
- socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
出错的代码 #server端 import socket import struct sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen( ...