javascript真假值
所有为假的值:
false
null
数字 0
字符串 ''
数字NaN
undefined
其它所有的值都被当作真值,包括字符串'false',true,以及对象。
JavaScript逻辑运算符及优先级
a && b
如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a
a || b
如果 a 为true,直接返回a,而不会继续往下执行。如果 a 为false,直接返回b,而不管b为true或者false 。
例1:
今天看了一段YUI compressor压缩的js代码:
userNum && (ind += index,ind >= userNum && (ind -= userNum),ind < 0 && (ind === -2 && (ind = -1),ind += userNum),selLi.removeClass("on"),$(selLi[ind]).addClass("on"));
直接疯掉了,估计一下子没几个人能看懂。那么就把他“翻译”一下。
&& (逻辑与)
这里主要是一个“&&”运算,首先要搞懂这个,看一个简单的例子:
var a = 1 && 2 && 3;//3 var b = 0 && 1 && 2;//0 var c = 1 && 0 && 2;//0 alert(a),alert(b),alert(c);
嘿嘿,写法很奇怪,运行的结果是3,0,0。一般我们在if语句中经常用到。“&&” (逻辑与) 运算和“||”运算真好相反,“&&” 运算遇到false就返回。
例如: a && b ,如果 a 为true,直接返回b,而不管b为true或者false 。如果 a 为false 那么直接返回a,上面例子中第一个var a = 1 && 2 && 3;因为1 && 2,1为真,返回2;2&&3, 2为真,返回3 。
var a = 0 || 1 || 2;//1 var b = 1 || 0 || 3;//1 alert(a),alert(b);
搞懂了“&&” 运算,再来看最上的面的YUI compressor压缩的js代码,翻译一下:
if(userNum){ ind += index; if (ind >= userNum) { ind -= userNum } if(ind < 0){ if(ind === -2){ ind = -1; } ind += userNum; } selLi.removeClass("on"); $(selLi[ind]).addClass("on"); }
&& (逻辑与) 和||(逻辑或)混合使用的时候要注意他们的优先级:
&& (逻辑与) 优先级高于||(逻辑或)
return a && b || c ,
根据a来判断返回值,a 是 false 则肯定返回 c;如果 b , c 都是 true ,那么我们就可以根据 a 来决定b 还是 c ,如果 a 是 false 则返回 c,如果a是true 则返回 b。
return a || b && c
根据优先级相当于先算 b && c ,然后和a 相 或;如果a是true,则返回a,不论是b或c,如果a是false,则如果b是false,返回b,如果b是true,返回c;
var a = 3 && 0 || 2; //2 var b = 3 || 0 && 2; // 3 var c= 0 || 2 && 3; // 3 alert(a),alert(b),alert(c);
本例来源:http://www.css88.com/archives/3770
例2:
每个逻辑表达式都是有返回值的,但这个值并不一定是布尔变量,下面分别介绍:
(1)与操作符(&&)
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是false,则直接返回这个操作数的值(注意,返回的是转换前的原值,不一定是布尔类型),中断后面操作数的处理;否则继续处理下一个操作数。如果直到最后一个操作数仍然对应布尔变量true,则返回最后这个操作数的值,下面的代码演示了其执行原理:
var a="1" && true && 0 && false && "abc"; alert(a); //可见a的值是0 var b="abc" && true && "123"; alert(b); //可见b的值是"123";
(2)或操作符(||)
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是true,则直接返回这个操作数的值,中断后面操作数的处理;否则继续下一个操作数。如果知道最后一个操作数仍然对应布尔变量false,则返回这个操作数的值。下面的代码演示了其执行原理:
var a="abc" || "123"; alert(a); //可见a的值是"abc" var b=false || "" || 0; alert(b); //可见a的值是0
(3)非操作符(!)
和前两种操作符不同,非操作符始终返回布尔类型的变量 ,例如:
var a=! "abc"; alert(a); //显示a的值为false
本例来源:http://www.itlearner.com/article/3084
。。。
相关推荐
条件运算符的优先级高于赋值运算符但低于逻辑运算符。 逻辑运算符包括逻辑与"&&"和逻辑或"||"。逻辑与的优先级高于逻辑或,这使得你可以编写更复杂的条件表达式。 最低优先级的运算符是逗号运算符",",它允许在同一...
在JavaScript编程中,运算符优先级决定了表达式中的运算执行顺序。如果没有明确指定运算顺序,表达式就会根据默认的优先级进行计算。在给定的文件内容中,列出了2019年JavaScript中运算符的优先级列表,这对于编写...
JavaScript中的运算符优先级是理解和编写复杂表达式的关键。它决定了不同运算的执行顺序,避免了不必要的括号使用。在JS中,运算符优先级分为多个级别,级别越高,运算符执行越早。例如,乘法和除法的优先级高于加法...
JavaScript 运算符优先级是JavaScript语言中一个重要的概念。它决定了在没有括号明确指定执行顺序的情况下,多个运算符一起出现在表达式中时运算执行的顺序。掌握运算符优先级有助于我们编写出更准确无误的代码,...
在编写复杂的布尔表达式时,了解运算符优先级非常重要,以确保代码按预期执行。 6. **条件语句中的应用**:逻辑运算符常用于`if`、`while`、`for`等条件语句中,帮助决定代码块是否执行。例如,`if (a > 5 && b )`...
逻辑运算符对操作数进行布尔运算,经常和关系运算符一样配合使用。逻辑运算符将多个关系表达式组合起来组成一个更复杂的表达式。逻辑运算符分为逻辑非’!’、逻辑与’&&’、逻辑或’||’3种,本文将介绍这三种逻辑...
首先,我们要理解,当没有明确的括号来指定计算顺序时,JavaScript会按照预定义的运算符优先级进行计算。例如,乘法和除法的优先级高于加法和减法。在文件中提到的例子中,`alert(2*3+4)` 这样的表达式会被...
- 在这个函数中,你可以实现解析表达式、处理运算符优先级、计算操作数以及处理括号的逻辑。 6. **用户界面**: - 为了创建一个用户友好的计算器,我们需要一个前端界面。可以使用HTML和CSS构建UI,然后用...
可以考虑使用栈数据结构来处理运算符优先级,或者使用已有的库,如`math.js`,它提供了解析和计算数学表达式的能力。 8. **用户界面**:虽然不是技术细节,但良好的用户界面设计可以提升用户体验。这可能包括按钮...
JavaScript中的逻辑运算符是编程中不可或缺的部分,它们用于处理布尔逻辑和进行条件判断。本文将深入探讨这些运算符的工作机制、用法以及一些常见的陷阱。 首先,我们要了解逻辑运算符的优先级。在JavaScript中,...
JavaScript的运算符分为14个优先级等级,从高到低依次为:一元运算符、算术运算符、比较运算符、逻辑运算符、三元运算符、赋值运算符和逗号运算符。例如,`!`的优先级高于`*`,所以在`!214*3+1`这个表达式中,`!`会...
JavaScript作为广泛使用的编程语言之一,其运算符优先级规则对代码执行逻辑有至关重要的影响。本文将详细介绍JavaScript中运算符的优先级,包括不同种类的运算符以及如何通过它们来控制代码的执行顺序。 在...
`if...else`语句是最常见的选择,但有时候为了代码的简洁性,我们可以利用运算符的优先级来实现类似的逻辑。本文将深入探讨如何利用与(`&&`)、或(`||`)运算符的优先级来实现`if...else`条件判断表达式。 首先,我们...
JS中的逻辑运算符包括逻辑与(&&)和逻辑或(||),它们是用于执行逻辑关系的比较运算符。它们在编程中非常重要,尤其是在条件语句中,用于在多个条件之间进行逻辑判断。 逻辑与(&&)运算符的特点是,只有当两个操作数都...
如果是运算符,根据运算符的优先级与栈顶运算符的优先级比较,如果当前运算符优先级更高或相等,则将栈顶运算符弹出并输出,然后将当前运算符压入栈;遇到左括号则压入栈,遇到右括号则将栈顶运算符弹出直到遇到左...
javascript 运算符还可以根据功能来分类:赋值运算符、比较运算符、算数运算符、位运算符、字符串运算符、逻辑运算符等。 赋值运算符用于将值赋给变量,例如 x += 1。 比较运算符用于比较两个值,例如 a == b。 ...
JavaScript是一种广泛使用的前端脚本语言,它的运算符系统非常完备,支持算术运算符、逻辑运算符、位运算符、赋值运算符等,以及一些特殊的运算符。下面我们详细介绍一下这些运算符。 首先,算术运算符是最基本的...
这些符号可以分为七类:算术运算符、关系运算符、位运算符、逻辑运算符、移位运算符、三元运算符和赋值运算符。 一、算术运算符 算术运算符是指用于执行算术运算的符号,例如 +、-、*、/、% 等。这些符号可以用来...