JS--该死的&&和||
近段时间搞前端js,零零星星的看了一些框架源码,发现大量存在&&和||,其语法看的我是头冒青烟,也不知道怎么回事,度娘搜吧,现在写下来,以防忘掉。
先来约束一下用词:有一表达式A : expr1 &&(||) expr2,包含左右两个表达式expr1和expr2。
表达式:
在javascript中除了false表示假之外,"",undefined,null,0都可以表示假,其他的都表示真,像true,'q',2等等...
短路:
对于&&,当 expr1 => false 的时候,A表达式便可end;expr1 => true的时候,要继续看expr2的值,如果expr2 => false,则A表达式为false,否则为true。
对于||,当 expr1 => true 的时候,A表达式便可end;expr1 => false的时候,要继续看expr2的值,如果expr2 => false,则A表达式为false,否则为true。
简单规则:
有一个指针p,用来指示执行A表达式的过程,当p指向expr1的时候,计算expr1的值,如果计算出expr1的值无法使A表达式end,例如 false || true,就将p指针指向expr2。
当A表达式end的时候,A表达式的值就是指针p指向那一部分。
例子:
'a' && => 首先p指向'a',由于'a'=>true,无法end该表达式,指针p指向0,结果就是无论0是真是假,表达式回end,此时指针指向0,也就是说返回值是0。
false || =>首先P指向false,由于false=>false,无法end该表达式,指针后移,你明白了?无需判断,表达式返回3。
true || 'e' =>首先p指向true,直接end该表达式,返回值为true.
JS--该死的&&和||的更多相关文章
- 看看该死的jquery.form.js的用法,不是个东西
$("#btnReg").click(function () { var options = { //target: '#output', // 把服务器返回的内容放入id为out ...
- 使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍
使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍 使用 React.js 的渐进式 Web 应用程序:第 1 部分 - 介绍 来自译者 markzhai:大家也知道最近 ...
- 日常css和js小知识点记录
2015-6-29 1.<meta name="viewport" content="width=device-width,user-scalable=no&quo ...
- Js之DOM(一)
----------------------------------------------------------------------------------------------第一部分 D ...
- Google HTML/CSS/JS代码风格指南
JS版本参见:http://www.zhangxinxu.com/wordpress/2012/07/google-html-css-javascript-style-guides/ HTML/CSS ...
- js优化原则
首先,与其他语言不同,JS的效率很大程度是取决于JS engine的效率.除了引擎实现的优劣外,引擎自己也会为一些特殊的代码模式采取一些优化的策略.例如FF.Opera和Safari的JS引擎,都对字 ...
- 从字符串拼接看JS优化原则
来自知乎的问题:JavaScript 怎样高效拼接字符串? 请把以下用于连接字符串的JavaScript代码修改为更高效的方式: var htmlString ='< div class=”co ...
- js的call() ,apply() 两种方法的区别和用法,最白话文的解释,让枯燥滚粗!
百度了一圈calll()函数和apply()函数,感觉还是糊里糊涂 正好我前几天刚又重新翻了一遍 那本 600多页 的圣经书,我习惯时不时的去打下基础,只是为了用来装逼,给人讲解....(我是有多蛋疼 ...
- H5-移动端实现滑屏翻页-原生js/jquery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js调试系列: 控制台命令行API
js调试系列目录: - 上次初步介绍了什么是控制台,以及简单的 console.log 输出信息.最后还有两个小问题,我们就当回顾,来看下怎么操作吧. 先打开百度,然后按 F12 打开后,如果不是 C ...
随机推荐
- Java虚拟机及运行时数据区
1.Java虚拟机的定义 Java虚拟机(Java Virtual Machine),简称JVM.当我们说起Java虚拟机时,可能指的是如下三种不同的东西: 抽象的虚拟机规范 规范的具体实现 一个运行 ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- 7Hibernate高级----青软S2SH(笔记)
- Jquery 插件\Js 插件收集
1.linq.js 使得js 的数组像c#的linq操作一下样 http://linqjs.codeplex.com/ 2.分页插件 https://github.com/mricle/Mricode ...
- react+react-router+webpack+express+nodejs
react+react-router+webpack+express+nodejs 做SinglePageApplication 支持热加载+ES6 有开发模式和发布模式 https://gith ...
- 推荐几款我一直在用的chrome插件(下)
请先看:推荐几款我一直在用的chrome插件(上) 6. Pocket 可以很方便的保存文章.视频等供以后查看,即实现了“Read it later”功能.有了 Pocket,您可以将所有想下次读的内 ...
- leetcode--Different Ways to Add Parentheses
题目链接:https://leetcode.com/submissions/detail/86532557/ 算法类型:分治法 题目分析:计算表达式的所有结果可能性 代码实现: class Solut ...
- FFmpeg-for IOS 一[安装]
FFmpeg编译环境搭建 准备 下载 gas-preprocessor 下载 ffmpeg包,ffmpeg 安装yasm,先安装homebrew,输入:ruby -e "$(curl -fs ...
- nginx tomcat session丢失的问题
nginx反向代理tomcat,出现seesion获取不到的问题. 网上搜索到的解决方案大多是集群tomcat共享session共享的问题,但我这个只有一台tomcat服务器,不涉及到服务器集群问题. ...
- 推荐一些国内的Jquery CDN免费服务
Jquery是个非常流行的JS前端框架,在很多网站都能看到它的身影.很多网站都喜欢采用一些Jquery CDN加速服务,这样网站加载jquery会更快.之前火端网络的一些网站都是使用Google的jq ...