Jquery学习FAQ(一)

1、(function($) {...})(jquery);这种定义方式是什么意思?

我们从js的函数执行逆回去才能看清他的执行过程,如果有一个带一个参数的函数a(这里先不定义函数a,就是假设已经有了),那么他执行就是a(b);这种样式。
我们还知道,js的匿名函数很强大,var c=function(paramC){...};那么c(paramCobj);就是执行了这个匿名函数.所以,就刚才的a(b);来说a可以是匿名函数。
a=function(paramA){...};a(b);就是这个结构。
好了,jquery连第一步都省了,直接使用没有名称的匿名函数,那么a(b);这里的a就被替换成了匿名函数,所以就成了(function(paramA){...})(b);(匿名函数在js中因为也是对象,所以需要双括号包裹起来)这个结构就说明了,我使用了匿名函数,并且立刻执行这个匿名函数。
再分析(function(paramA){...})(b)这种格式,匿名函数部分参数paramA是个形参,用在匿名函数内部作为值的调用,而b这个参数就是个实参,是将b这个值代入到函数内部,我说的算是比较浅显易懂了。
大部分时候,(function($) {...})(jquery);所在的上下文环境中,肯本没有jquery这个参数,所以在jquery匿名函数内,他会自己创建jquery对象。
我这里再简要说明下(function($) {...})(jquery);和a=function($) {...};a(jquery);等价。
所以,这种写法就是为了让匿名函数立即执行。

2、js中3个等号与2个等号有什么区别?

首先,== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说 ==,根据以下规则:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true

3、;function($,undefined) 前面的分号是什么用处?

;(function($){$.extend($.fn...
现般在一些 JQuery 函数前面有分号,在前面加分号可以有多种用途:
1、防止多文件集成成一个文件后,高压缩出现语法错误。
2、这是一个匿名函数,一般js库都采用这种自执行的匿名函数来保护内部变量 (function(){})()。
3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能。

4、Jquery扩展函数$.extend如何使用?

点击查看链接

posted @ 2013-04-03 17:03  jmz  阅读(691)  评论(0编辑  收藏  举报
Copyright by © Pippon