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入门&选择器
最新的版本jQuery 1.7,&,JQuery, UI ,文档, CHM 版,很详细的文档。
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"正是这个库的两个版本,它们在网页动态效果处理、DOM操作、事件处理等方面有着广泛的应用。 首先,我们来了解下jQuery的核心理念: "Write Less, Do More"。...
web开发书籍全套(7本),包括《java & java web教程》、《JavaScript参考手册》、《jQueryMobile教程》、《jQuery参考手册》、《mangodb教程》、《PHP参考手册》、《PHP教程》
| 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 v2.0.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license @ sourceMappingURL=jquery-2.0.2.min.map
手册中的即时搜索功能,使得开发者可以快速定位到特定的API或概念,这对于日常开发和问题排查极其有用。总的来说,《jQuery & jQuery UI 1.3.2离线AIR版手册》是一个强大的工具,帮助开发者深入理解和运用这两个库,...
jquery & jquery UI 学习资料
JavaEE|JavaSE6|Servlet|jQuery|Json|API文档打包下载,极大的方便了开发。 欢迎下载。另有大量的Java开发方面的电子和源码,有需要的请留下邮件,我会发给你们的。 谢谢。
首先,jQuery的核心库jQuery-1.8.3.min.js和jQuery-2.1.4.min.js是其发展过程中的两个稳定版本。1.8.3属于1.x系列,而2.1.4则属于2.x系列。这两个版本的主要区别在于对旧版浏览器的支持。1.x系列对IE6/7等老浏览器...
jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
[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发布了!jQuery 是一个JavaScript 库,它有助于简化 JavaScript™ 以及 Asynchronous JavaScript XML (Ajax) 编程。与类似的 JavaScript 库不同,jQuery 具有独特的基本原理,可以简洁地表示常见的...
本篇将深入探讨jQuery 1.11.0与jQuery UI 1.10.4这两个版本的功能、特性以及它们在实际项目中的应用。 首先,jQuery 1.11.0是jQuery库的一个稳定版本,它在1.10.x的基础上进行了优化和修复,确保了更好的浏览器兼容...
值得注意的是:如果你正在使用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.min.js`。这个版本的jQuery,虽然已经相对较为陈旧,但仍然包含了其核心的特性,足以满足许多基础和进阶的前端...
在网页设计中,用户体验是至关重要的,而加载动画与进度栏就是提升用户体验的重要元素。"30个jQuery & CSS3加载动画和进度栏插件"集合了多种创新且高效的工具,旨在帮助开发者创建吸引人的、反馈及时的网页交互。...
Learning PHP, MySQL & JavaScript With jQuery, CSS & HTML5(5th) 英文epub 第5版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
jQuery是一个JavaScript函数库。jQuery是一个轻量级的"写的少,做的多"的JavaScript库。jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM ...