`
bufanliu
  • 浏览: 200661 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

js的&&和&,||和|运算符两个不同点

阅读更多
1.性能上的比较

如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。

由于&&和||可能不考虑第二个运算数,所以我们应尽量避免在它们右边使用具有副作用(赋值、递增、递减和函数调用)的表达式,除非非常清楚自己再做什么。

if((a == null) && (b++ >10)) stop(); //b++递增运算可能不被执行
if((b++ >10) && (a == null)) stop(); //保证b++递增运算都被执行

2.逐位运算

&和|除了可以进行"逻辑运算"[1]外,还可以进行逐位运算,而&&和||只能进行逻辑运算。

3.JS的&和|与C#的&和|

在JS中,&和|只是逐位运算符,而在C#中,&和|既是逻辑运算符,又是位运算,通过以下代码可以看出。

document.write(true & false); //JS,结果为0

document.write(1 & 0); //JS,结果为0
bool a = true & false; //C#,结果为false
int b = 1 & 0; //结果为0


注[1]: &和|本是逐位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行 "逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算。也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。
分享到:
评论

相关推荐

    js中的 || 与 && 运算符详解

    JavaScript中的逻辑运算符&&和||用于进行布尔逻辑运算,它们在编程中非常常见。这些运算符在进行逻辑判断时,会根据条件的不同返回不同的值。具体来说,&&运算符要求两边的表达式都为真时才返回真,而||运算符只要求...

    JavaScript 入门·JavaScript 具有全范围的运算符

    JavaScript是一种广泛使用的前端脚本语言,它的运算符系统非常完备,支持算术运算符、逻辑运算符、位运算符、赋值运算符等,以及一些特殊的运算符。下面我们详细介绍一下这些运算符。 首先,算术运算符是最基本的...

    javascript相等运算符与等同运算符

    在JavaScript编程语言中,相等运算符(`==`)与等同运算符(`===`)是两个非常重要的概念,它们用于判断两个值是否相等,但它们的比较方式和逻辑有所不同,这一点对于理解JavaScript的数据类型转换和比较规则至关...

    JavaScript的运算符和语句

    2. **比较运算符**:用于比较两个值的大小或相等性,如等于 (==)、不等于 (!=)、大于 (>)、小于 (<)、大于等于 (>=) 和小于等于 ()。在`023-比较运算符.html`中,这些运算符用于条件判断。 3. **逻辑运算符**:包括...

    JavaScript完全入门_04__JavaScript的数据类型和运算符.pdf

    这意味着在定义变量、函数名等标识符时,`computer` 和 `Computer` 是被视为两个不同的标识符。例如: ```javascript let computer = "PC"; let Computer = "Mac"; console.log(computer); // 输出 "PC" console....

    JavaScript 80 道面试题及答案.docx

    但是,需要注意的是,这两个运算符的行为不同: ``` console.log(null == undefined); // true console.log(null === undefined); // false ``` && 运算符是 JavaScript 中的一个逻辑运算符,它可以用来检查多个...

    javascript文档

    + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对...

    第5章 运算符1

    关系运算符如`(小于)、`>`(大于)、`(小于等于)、`>=`(大于等于)、`==`(等于,忽略类型)和`===`(全等,考虑类型和值)用于比较两个值之间的关系。例如: ```javascript var a = 5, b = 10; console.log(a ...

    JAVA开发笔试题(初级)V1.doc

    因为 `str` 和 `num` 是两个不同的对象,比较的是对象的引用,而不是对象的值。 二、Spring 框架 1. Spring 事务:题目 5 中的代码 `@Transactional(rollbackFor = Exception.class) private String updateData(){...

    JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符

    2. 自增(++)和自减(--)运算符:这两个运算符用于数值类型的变量,用于将其值增加或减少1。它们有两种形式:前置和后置。前置形式先对变量值进行增加或减少,然后再将结果用于表达式的其他部分;后置形式则相反。...

    【JavaScript源代码】JavaScript中展开运算符及应用的实例代码.docx

    这里,`a` 和 `b` 分别获取了数组的前两个元素,而 `c` 获取了剩余的所有元素。 5. 类数组对象转为数组 展开运算符还可以帮助我们将类数组对象转换为真正的数组: ```javascript let oLis = document....

    SimpleCalculatorApp:简单的计算器应用程序,允许用户输入两个数字,然后使用一个运算符(+ _ *或)进行计算并将结果返回给用户

    - 使用`Console.ReadLine()`函数获取用户输入的两个数字和运算符。 - `Console.WriteLine()`用于向用户显示计算结果。 2. **字符串处理**: - 用户输入的是字符串形式,需要通过`Split()`函数将输入的数值和...

    JavaScript中的比较操作符>、<、>=、<=介绍

    在JavaScript编程语言中,比较操作符是比较两个变量或表达式的值并返回一个布尔值(true或false)的运算符。JavaScript中常用的比较操作符包括大于(>)、小于(<)、大于等于(>=)、小于等于()。这些操作符可以...

    JS的递增/递减运算符和带操作的赋值运算符的等价式

    在JavaScript编程语言中,递增(`++`)和递减(`--`)运算符是两种非常实用且高效的工具,用于快速增加或减少变量的值。递增/递减运算符有两种形式:前缀形式(如 `++a` 或 `--a`)和后缀形式(如 `a++` 或 `a--`)...

    JavaScript三元运算符的多种使用技巧

    这在处理需要根据条件在两个或多个函数中选择一个来调用时特别有用。通过使用三元运算符选择函数名作为数组的索引,可以执行对应的操作。这种技巧在操作DOM元素时尤其方便。 如果遇到需要调用函数进行更复杂操作的...

    js代码-对象的扩展和rest运算符。

    这两个运算符极大地丰富了JavaScript的语法,使得代码更加简洁易读。在实际开发中,对象扩展运算符常用于创建配置对象、合并配置,REST运算符则广泛应用于处理可变数量的参数,提高了函数的灵活性。 在提供的压缩包...

    微软JavaScript手册

    + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对...

    javascript,js帮助文档

    JavaScript,简称JS,是一种轻量级的解释型编程语言,广泛应用于网页和互联网应用开发。作为客户端脚本语言,它可以直接在用户的浏览器上运行,无需服务器支持,为网页添加交互性和动态功能。以下是对JavaScript的...

    JavaScript习题带答案.pdf

    1. 题目要求随机生成两个小数并比较大小,可以使用`Math.random()`生成0到1之间的随机小数,通过条件运算符决定显示哪个是较大的数。 2. 计算闰年可以通过年份是否能被4整除但不能被100整除,或者能被400整除来判断...

    (完整word版)JavaScript习题.doc

    在习题中有一道关于字符串减法的题目,实际上在JavaScript中,两个字符串相减不会得到预期的结果,因为它们不能进行算术运算。 7. **变量作用域和声明**:JavaScript中,`var`声明的变量在函数范围内,而`let`和`...

Global site tag (gtag.js) - Google Analytics