短路问题经常是发生在逻辑运算符中的逻辑与(&&)、逻辑或(||)

  1、逻辑或(||)

    他是一真则真,当逻辑或前面的表达式结果为1或true时,逻辑或后面的表达式是不会执行的

  2、逻辑与(&&)

    他是一假则假,当逻辑与前面的表达式结果为0或false时,逻辑与后面的表达式是不会执行的

  3、小知识点:当一个表达式中既有逻辑与,又有逻辑或,那么先执行逻辑与,逻辑与的优先级比逻辑或高

  用几个例子来说明一下

  var a=1,b=2,c="博客园";

  a || b && c="百度";

  console.log(c)

  解析:由于上面这个表达式中既有逻辑与,又有逻辑或,所以先执行逻辑与

  上面的表达式也就演变成了:a ||  (b && c="百度"); a=1,所以为true,那么遇到真了,后面的(b && c="百度")这个表达式就不会执行了,自然而然c="百度"这句话就不会执行,所以c="博客园"。

  那么如果(a || b) && c="百度"  

  console.log(c)

  解析:因为有了括号,所以先执行括号里的,a=1为true,根据逻辑与的短路,遇到真了后面的依然会继续执行,遇到假的后面才不会执行,所以就变成了 true && c="百度";所以c被重新赋值了,所以c="百度"

  

js的短路的更多相关文章

  1. JS利用短路原理简写if语句

    看GoogleDoodle-Dance的源代码,学习到一个小知识——简写if语句. 几乎所有语言中||和&&都遵循“短路”原理,如&&中第一个表达式为假就不会去处理第二 ...

  2. JS中短路运算符&&和||

    在JS函数中我们经常会使用到短路运算符,主要是逻辑与(&&) 和 逻辑或(||) 1.逻辑与 && 的运算方式 var a = 5 && 6; cons ...

  3. js中if的另类实现

    偶然发现一篇有意思的博客<JS利用短路原理简写if语句>  利用&&短路来实现if的简写. 如 1==2&&a1=1,则后面的a1=1不会进行判断,1==1 ...

  4. JavaScript小细节点罗列

    共勉! 属性访问表达式 众所周知,JavaScript为属性的访问定义了两种语法方式: 表达式.标识符 // 表达式(指定对象) 标识符(指定需要访问的属性的名称) 表达式[表达式] //表达式1(指 ...

  5. JavaScript小细节点罗列(1)

    共勉! 属性访问表达式 众所周知,JavaScript为属性的访问定义了两种语法方式: 表达式.标识符 // 表达式(指定对象) 标识符(指定需要访问的属性的名称) 表达式[表达式] //表达式1(指 ...

  6. JS逻辑运算符&&与||的短路运算

    最近看到一个360面试题,题目如下: 下面代码的输出值是? alert(1&&2); 正确的结果是 2. 1.后来仔细研究了一下JS逻辑运算的相关内容,在MDN上面找到相应描述: 下面 ...

  7. js短路表达式

    今天碰见个题目,感觉短路表达式很好用. 题目: 定义一个计算圆面积的函数area_of_circle(),它有两个参数: r: 表示圆的半径: pi: 表示π的值,如果不传,则默认3.14 funct ...

  8. JS循环 for while 全局/局部变量 短路

    循环语句: For for循环的格式 for(var i = 0; i < 10; i ++){ } for循环的执行顺序: ①   ② 若判断为 true  进④  进③ 进②判断 ……循环 ...

  9. js 实用技巧 短路求值

    &&运算符  如果操作有false  则返回false  例如 0&&1  // 返回0 true&&false  //返回false 0&&a ...

随机推荐

  1. laravel 核心类Kernel

    vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php.是laravel处理网络请求的最核心类,在app容器准备好了之后, ...

  2. AtomicReference

    public class AtomicReference<V> implements java.io.Serializable { private static final long se ...

  3. WdatePicker 日期区间设置

    <input id="billsStartDate" name="billsStartDate" onclick="WdatePicker({d ...

  4. 用JavaScript写一个简单的计算器

    本文使用js实现了一个简单的加.减.乘.除计算器. 以下是css部分代码: *{ padding:0; margin:0; color: #424242; } .outer{ width:300px; ...

  5. opencv学习之路(41)、人脸识别

    一.人脸检测并采集个人图像 //take_photo.cpp #include<opencv2/opencv.hpp> using namespace cv; using namespac ...

  6. zeros()和ones()和eye()

    python--zeros函数和ones函数 使用numpy.zeros,numpy.ones,numpy.eye等方法可以构造特定的矩阵 >>>from numpy import ...

  7. python3中argparse模块

    1.定义:argparse是python标准库里面用来处理命令行参数的库 2.命令行参数分为位置参数和选项参数:         位置参数就是程序根据该参数出现的位置来确定的              ...

  8. HTTP请求与接收get/post方式

    //get方式 public string HttpGet(string Url, string postDataStr) { HttpWebRequest request = (HttpWebReq ...

  9. RFS--RequestLibrary

    一.requestlibrary关键字1.1create session:创建一个session回话.Create Session: 创建一个session,连接某个服务器.Create Ntlm S ...

  10. error LNK1169 找到一个或多个多重定义的符号的解决方法

    问题描述如下: 有 三个源文件,A.h.B.cpp.C.cpp. A.h是头文件,其中声明了三个变量a1.a2. a3. B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件.B.cpp ...