`

jQuery中的&& ||

阅读更多
jQuery1.2.6 clean方法中有这么一段第一眼看去会让人晕掉的方法。完全不知其所言。
“||, && 可以这样用?”,“这段东西最终返回的是个什么对象啊?”
// Trim whitespace, otherwise indexOf won't work as expected
var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div");

var wrap =
// option or optgroup
!tags.indexOf("<opt") &&
[ 1, "<select multiple='multiple'>", "</select>" ] ||

!tags.indexOf("<leg") &&
[ 1, "<fieldset>", "</fieldset>" ] ||

tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
[ 1, "<table>", "</table>" ] ||

!tags.indexOf("<tr") &&
[ 2, "<table><tbody>", "</tbody></table>" ] ||

// <thead> matched above
(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||

!tags.indexOf("<col") &&
[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||

// IE can't serialize <link> and <script> tags normally
jQuery.browser.msie &&
[ 1, "div<div>", "</div>" ] ||

[ 0, "", "" ];

   深入研究查询资料后才明白,这一段到低是想搞些干什么,也才被这巨牛的写法所折服。

               
// Logical AND && : the second operand will always be returned, no matter whatever it is, except the first operand is one of (0, -0, null, "", false, undefined, NaN) for such condition, the first operand will be returned.   
               
// Logical OR || : the first operand will always be returned, except the first operand is one of (0, -0, null, "", false, undefined, NaN).
// in this situation the second operand will be returned, no matter what the second operand it is, even it's the same to the first one.


//<<Professional JavaScript for Web Developers 2nd Edition.pdf>> Page 52.

   因为已经trim过了,前后都没有了空格,主要是前面没空字符串,所以此时判断是否以什么开头也就是startWith,最简单就是写成tags.indexOf("<opt"), 看法indexOf,返回值当startWith为true时,刚好返回的是0, 其它情况:  1,找到但是在字符串中间出现的返回值是大于0正数;2,完全没出现过时,返回为-1. 反正一样都是非0的数,而妙处就在在JavaScript定义中对number类对象,只是为0时,才被认为可转化为false,其它包括负数都被认为为true.

The indexOf() method returns the position of the first occurrence of a specified value in a string.

If the Boolean object has no initial value, or if the passed value is one of the following:

0, -0, null, "", false, undefined, NaN
the object it is set to false. For any other value it is set to true (even with the string "false")!

This method returns -1 if the value to search for never occurs.

  那么假设如果tag是以"<opt"开头的话,那indexOf的值就是0,而前面加一个!号后, !tag.indoexOf("<opt") 的值就为true了, 那么就相当于是
true && [...], 再回头看看 && 的定义, 前一个值为false时才返回前一个参数值, 否则总是返回第二个参数(即便它自己也是false 或 NaN什么的)。

   总之呢, jQuery原码中中这两个逻辑符号用的频率是相当相当的高,特别是 || 。
jQuery中几乎没那几方法实现中不用它的。 用好它们的确可以使代码更简化,优雅,高效。

例如下段,其常被用于,有默认值的情况。a不行,让b上,b也不行时,那就只能c了。退而求其次的处理方式。
// Start an animation from one number to another
custom: function(from, to, unit){
this.startTime = now();
this.start = from;
this.end = to;
this.unit = unit || this.unit || "px";
分享到:
评论

相关推荐

    jQuery&&ASP.zip

    在"jQuery&&ASP.NET"这个压缩包中,文件可能包括了HTML、CSS、JavaScript(包含jQuery代码)和C#(ASP.NET后端语言)等不同类型的文件,每个文件都可能是一个独立的实验案例,详细展示了如何将这些技术应用于实际...

    JQuery入门&选择器

    JQuery入门&选择器

    jQuery 1.7&JQuery UI 文档 CHM 版

    最新的版本jQuery 1.7,&,JQuery, UI ,文档, CHM 版,很详细的文档。

    Jquery智能提示 jquery&vsdoc1.4.0-2.1.0

    Jquery智能提示完整全部版本 jquery&vsdoc1.4.0-2.1.0 jquery-1.4.2.min.js jquery-1.4.3-vsdoc.js jquery-1.4.3.min.js jquery-1.4.4-vsdoc.js jquery-1.4.4.min.js jquery-1.4.min.js jquery-1.5-vsdoc.js...

    jquery-2.1.4.js 、jquery-2.1.4.min.js 【jquery包 js】

    标题中提到的"jquery-2.1.4.js"和"jquery-2.1.4.min.js"正是这个库的两个版本,它们在网页动态效果处理、DOM操作、事件处理等方面有着广泛的应用。 首先,我们来了解下jQuery的核心理念: "Write Less, Do More"。...

    js&jQuery;&php;开发全套书籍(7本)

    web开发书籍全套(7本),包括《java & java web教程》、《JavaScript参考手册》、《jQueryMobile教程》、《jQuery参考手册》、《mangodb教程》、《PHP参考手册》、《PHP教程》

    jquery jqGrid 4 7 1 zip下载 css js plugins src

    | jquery jqGrid min js | jquery jqGrid src js | jquery 1 9 0 min js plugins | grid addons js | grid postext js | grid setcolumns js | jquery contextmenu js | jquery searchFilter js | jquery tablednd ...

    jquery-2.0.2

    jQuery v2.0.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license @ sourceMappingURL=jquery-2.0.2.min.map

    jQuery & jQuery UI 1.3.2离线AIR版手册

    手册中的即时搜索功能,使得开发者可以快速定位到特定的API或概念,这对于日常开发和问题排查极其有用。总的来说,《jQuery & jQuery UI 1.3.2离线AIR版手册》是一个强大的工具,帮助开发者深入理解和运用这两个库,...

    jquery & jquery UI 学习资料

    jquery & jquery UI 学习资料

    JavaEE|JavaSE6|Servlet|jQuery|Json|API文档打包下载

    JavaEE|JavaSE6|Servlet|jQuery|Json|API文档打包下载,极大的方便了开发。 欢迎下载。另有大量的Java开发方面的电子和源码,有需要的请留下邮件,我会发给你们的。 谢谢。

    1.Javascript & jQuery & Ajax & JSON

    JavaScript、jQuery、Ajax和JSON是Web开发中的四个关键概念,它们在构建动态、交互式的网页应用中发挥着重要作用。下面将分别对这四个主题进行详细阐述。 **JavaScript** 是一种轻量级的脚本语言,主要用于客户端的...

    jquery-1.11.1.min.js

    jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */

    [jQuery] jQuery & JavaScript 口袋书 (英文版)

    [Addison-Wesley Professional] jQuery & JavaScript 口袋书 (英文版) [Addison-Wesley Professional] jQuery and JavaScript Phrasebook (E-Book) ☆ 图书概要:☆ Get more done faster with jQuery and ...

    jquery v1.7 beta1.zip

    jquery v1.7 beta1发布了!jQuery 是一个JavaScript 库,它有助于简化 JavaScript™ 以及 Asynchronous JavaScript XML (Ajax) 编程。与类似的 JavaScript 库不同,jQuery 具有独特的基本原理,可以简洁地表示常见的...

    jquery-1.11.0+jquery-UI-1.10.4

    本篇将深入探讨jQuery 1.11.0与jQuery UI 1.10.4这两个版本的功能、特性以及它们在实际项目中的应用。 首先,jQuery 1.11.0是jQuery库的一个稳定版本,它在1.10.x的基础上进行了优化和修复,确保了更好的浏览器兼容...

    jQuery & jQuery UI 1.7.2参考手册

    值得注意的是:如果你正在使用jQuery Mobile,请使用最新的jQuery 1.7.2和jQuery Mobile 1.1这两个版本,因为之前的jQuery Mobile版本还基于jQuery core 1.7.1或更早的版本。 注:该参考手册是英文版的。

    jquery版本2.2.4

    在这个标题为“jquery版本2.2.4”的压缩包中,包含的是jQuery 2.2.4的最小化版本文件——`jquery-2.2.4.min.js`。这个版本的jQuery,虽然已经相对较为陈旧,但仍然包含了其核心的特性,足以满足许多基础和进阶的前端...

    30 个 jQuery & CSS3 加载动画和进度栏插件

    在网页设计中,用户体验是至关重要的,而加载动画与进度栏就是提升用户体验的重要元素。"30个jQuery & CSS3加载动画和进度栏插件"集合了多种创新且高效的工具,旨在帮助开发者创建吸引人的、反馈及时的网页交互。...

    jQuery1.11.0_20140330_jquery_

    jQuery是一个JavaScript函数库。jQuery是一个轻量级的&quot;写的少,做的多&quot;的JavaScript库。jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM ...

Global site tag (gtag.js) - Google Analytics