`

[转]jQuery中的&& ||

    博客分类:
  • html
 
阅读更多

jquery的一些语法还不太熟,接触到逻辑与以及逻辑或,找到这篇文章,写的不错,实践验证理论。

 

http://cute-spring.iteye.com/blog/1097927

 

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中文转换成拼音代码

    在IT领域,jQuery中文转换成拼音的代码是一个实用的功能,尤其在处理中文数据时非常有用。这个功能可以将用户输入的中文字符转化为对应的拼音,同时还能生成中文汉字的唯一编号。这种技术在诸如搜索引擎优化(SEO)...

    Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解

    本文着重讲解了在JQuery中使用$(document).ready()函数的详细方法和它的重要性。 在JQuery中,$符号是JQuery库的简写和引用。例如,$()函数等同于jQuery()函数。它为开发者提供了一种方便的方式来选择和操作文档中...

    jQuery&CSS3卡片翻转特效.zip

    本项目“jQuery&CSS3卡片翻转特效”结合了这两种技术,为网页元素,特别是卡片式设计,提供了动态的翻转效果,增强用户体验。 jQuery是一个轻量级、功能丰富的JavaScript库,它简化了DOM操作、事件处理、动画效果...

    《轻松玩转jquery》源代码

    通过下载并研究《轻松玩转jQuery》的源代码,读者可以亲手实现书中的示例,这将有助于加深对jQuery的理解,提高实际开发能力。源代码中可能包含了书中各个章节的实例,从基础操作到高级应用,覆盖了jQuery的各个方面...

    jquery文本转语音播放

    "jQuery文本转语音播放"技术就是一种创新的方法,它允许用户在浏览器环境中将文字内容转化为可听的语音,这对于视力障碍者或者那些希望“听”网页内容的用户来说尤其有用。本文将深入探讨如何使用jQuery和相关技术来...

    JQuery&JAVA JSON互转

    这篇名为“JQuery&JAVA JSON互转”的博客文章,可能讲解了如何在JQuery前端和Java后端之间有效地转换JSON对象。以下是一些相关的知识点: 1. **JSON基本结构**: JSON支持两种数据结构:键值对(对象)和数组。...

    使用JQuery实现从JSON对象转换为form提交数据

    在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...

    jquery 数字转换成中文大写

    在IT领域,尤其是在编程实践中,有时我们需要将数字以中文大写的形式表示,这在财务报告、发票或银行转账等场景中非常常见。本教程将详细讲解如何使用jQuery实现这一功能,帮助初学者理解数字与中文大写的转换逻辑。...

    jQuery转动的星球

    在Web开发中,为了创造引人入胜的视觉效果,开发者经常需要借助JavaScript库,如jQuery。"jQuery转动的星球"是一个独特的jQuery插件,名为PLANETARIUM,它允许开发者在网页上创建交互式的行星模型,给用户带来虚拟...

    jQuery圆形旋转导航.zip

    【jQuery圆形旋转导航】是一种基于JavaScript库jQuery实现的交互式导航菜单效果,它以其独特的设计和动态特性,为用户提供了视觉吸引力和易于操作的界面。这个特效的核心在于它以圆形布局展示导航链接,并且带有箭头...

    jquery环形3D立体旋转特效

    在本教程中,我们将探讨“jquery环形3D立体旋转特效”,这是一种利用jQuery创建的视觉效果,它能为网页增添动态且引人入胜的用户体验。 1. **jQuery基础**: - jQuery库是用JavaScript编写的,通过提供简洁的API,...

    jquery 360度旋转插件

    《jQuery 360度旋转插件:elbeanio-jquery.tagsphere深度解析》 在网页设计和开发中,动态视觉效果常常能提升用户体验,其中360度旋转展示是常见的一种手法。jQuery,作为一款轻量级、功能强大的JavaScript库,提供...

    jQuery 抽奖转盘demo

    在“jQuery 抽奖转盘demo”中,可能包含了一个名为`jqueryrotate.js`的插件文件,这个插件专门扩展了jQuery,提供了更方便的旋转功能。使用插件可以避免直接操作CSS,简化代码,提高可维护性。通常,使用插件的步骤...

    jquery文字3D翻转特效

    《jQuery文字3D翻转特效详解》 在网页设计中,动态效果往往能吸引用户的注意力,提高用户体验。本文将深入探讨“jQuery文字3D翻转特效”,这是一种利用jQuery库实现的创新视觉效果,通过3D变换让文字或div元素产生...

    jquery ajax Datatable与json之间数据转换

    jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    2.jQuery层拖拽插件之jquery仿QQ空间的模块拖动功能插件下载 3.jQuery动感图标切换网页Tab选项卡导航代码 4.jquery封装Tab标签选项卡,内含动画版选项卡及滑动门 5.jQuery实现flash动感切换选项卡TAB插件示例 ...

    最完整的table转csv&excel;&pdf; jquery插件

    最完整的table转csv&excel;&pdf; jquery插件。最完整的table转csv&excel;&pdf; jquery插件。最完整的table转csv&excel;&pdf; jquery插件。

    jquery圆形旋转特效.zip

    本示例中的"jquery圆形旋转特效.zip"是一个包含使用jQuery实现的圆形旋转特效的资源包。这个特效通常用于创建吸引用户的交互式导航菜单或展示元素,比如游戏SVG播放导航。 首先,我们要理解SVG(Scalable Vector ...

    jquery中文帮助文档(chm和api)

    本文将详细介绍压缩包中的jQuery中文帮助文档,包括各版本的API和相关工具,为开发者提供详尽的参考资源。 **一、jQuery 1.2.6 VSdoc-CN** `jquery-1.2.6-vsdoc-cn.rar`包含的是jQuery 1.2.6版本的中文VSdoc文档。...

    jQuery&amp;CSS3旋转幻灯片代码

    为了确保在不支持CSS3的浏览器中也能正常工作,可以使用jQuery的动画方法(如`.animate()`)作为备选方案。同时,使用Modernizr这样的库检测CSS3支持,以便在必要时提供回退方案。 ### 结构化代码 - 创建HTML布局,...

Global site tag (gtag.js) - Google Analytics