该文属于原创,原文出自http://www.pm-road.com/index.php/2014/09/13/102/
之前有一个同事去面试,面试过程中碰到这样一个问题:
在js中写出如下的答案 :
var a = 2;
var b = 3;
var andflag = a && b ;
var orflag = a || b;
问andflag 和orflag 分别是什么?
起初我认为: andflag 和orflag 的值都为 true; 毕竟 && 和 || 都是求Boolean ,后来发现,我错了。
答案应该是 andflag = 3,orflag = 2;
原因是这样的:
在运算过程中,首先js 会将 && 和|| 两边的值转成Boolean 类型,然后再算值 ,&&运算如果返回true,则取后面的值,如果|| 返回true,则取前面的值 , 而其中数值转换成boolean 的规则 是:
对象、非零整数、非空字符串返回true,
其它为false ;
a && b 的运算就是 :因为 a 和 b全是非零整数,所以 a 和 b 也就是true ,而 true && true 返回 true ,则取后面的b ,同理 a 和b 全是非零整数,a 和b 全是true ,则true || true 返回 true ,取|| 前面的值 也就是2;
同样:该逻辑运算符支持短路原则:
如 var a = “” || null || 3 || 4 —-> var a = fasel || false || true || true 结果为true 则返回第一个true,即是3
var b = 4 && 5 && null && 0 ——> var b = true && true && false && false 结果是false 则返回第一个false 即是null .
相关推荐
今天在做逻辑运算符的时候遇到一个小问题一直转不过弯来,var a=(undefined&&123)||(3||5)的返回值是什么? 首先是||的返回值问题: ||的返回值会返回最早遇到非以下类型的值: NaN null undefined 0 false; 所以3||...
与C、Java不同的是,JavaScript中逻辑与(&&)和逻辑或(||)操作符可以应用在任何值上,而操作结束后返回的也不一定是boolean值。 逻辑与&&的处理规则 JavaScript中&&的处理规则是这样的: 1.判断第一个值是否为Falsy。...
js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。 当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下: 1.&& 1.1...
|| 与 &&在JS里与其它语言不一样,这是选择器运算符,而非逻辑运算符。 对于||来说,若判断为true,则返回第一个值,为false返回第二个值。 &&相反,若判断为 true,则返回第二个,为 false为返回第一个值。 绝对不是...
按位与或非和逻辑与或非的区别 定义: 按位与或非是对计算机位的操作,属于计算机二进制运算的操作。——位操作符 逻辑与或非是对boolean(布尔)值的操作。——布尔操作符 操作符: 按位 与(&) 或(|) 非(~)...
今天看了一段YUI compressor压缩的js代码: userNum && (ind += index,ind >= userNum && (ind -= ...&& (逻辑与) 这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子: 1 var a = 1 && 2 && 3;//3
有时候,我们会在jQuery框架或者其他js插件中发现里面有很多 “ && ” 和 “ || ”,那么这两个标识到底是什么含义?怎么使用?我觉得还是有必要稍微深究一下。 一、原理: && 操作符特点:逻辑运算表达式中只要一个...
js的逻辑分支,1.程序的三大结构,顺序结构 逻辑结构 循环结构 这是逻辑结构里面的逻辑分支
1、||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true。 alert(true||false); // true alert(false||true); // true alert(true||true); // true alert(...
关于 JavaScript 中的逻辑运算符,我们经常使用却可能不知道它的一些机制和用法。 机制 首先我们需要知道几种逻辑运算符的优先级是不同的(关于完整的运算符优先级,看运算符优先级),逻辑非>逻辑与>逻辑或>条件...
微信包含视图(wxml和wxss)和逻辑(js)的组件优化实例,微信小程序组件优化方案的演示源代码,做法分三步: - 子组件的wxml作为模板include到父容器中 - 子组件的wxss import到父容器的wxss中 - 把父容器的...
有时候,在别人的js函数写法中,会有function(){ a && b;},开始百思不得其解,后来查了下资料,觉得很意思。 实际上这个函数这样的写法是代替了if语句,如果b是一个执行方法或者语句,那么看a...逻辑或和它正相反。
kettle JavaScript代码 逻辑判断型函数
在对浏览界面进行解析获取用户信息的过程中,想要精准识别用户,对useragent解析&手机品牌匹配是必不可少的环节,本文档提供了解析逻辑,以及提供了最新的手机品牌和useragent对应的文件,帮你丰富用户画像,以及...
JS基础:短路逻辑笔试题:alert(0&&2) alert(1&&2) alert(0||2) alert(1||2)
’、逻辑与’&&’、逻辑或’||’3种,本文将介绍这三种逻辑运算符 逻辑非 逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作...
、逻辑与&&、逻辑或||。 所谓短路操作就是,当&&的第一个操作数的值是false时,直接返回第一个操作数的值,不再对第二个操作数进行计算; [removed] var bar1 = 0&&c; console.log('bar1====='+bar1); //bar1=====0...