js一些要点
js中:
undefined == null?? --> true
false == null??????????--> false
false == undefined --> false
undefined === null?? --> false
?
true && 任意對象 ? ? ? --> 返回右邊的任意對象
?
關(guān)于js立即執(zhí)行函數(shù):
function (){ /*codde*/ }(); function aa(){/*codde*/}();這樣不會執(zhí)行并且拋出異常
(function aa(){/*codde*/}()); (function aa(){/*codde*/})();都是正確方式,推薦第一種。
?
js中普通對象 和 new函數(shù)()對象?以及 普通函數(shù)() 區(qū)別
1,普通函數(shù)(),表示執(zhí)行一次函數(shù),返回結(jié)果為內(nèi)部return的結(jié)果。沒有為undefined
2,var a = new 函數(shù)(),也會執(zhí)行一次函數(shù),但會將執(zhí)行完后的函數(shù)上下文作為一個(gè)對象返回給a,可以通過a.i 調(diào)用函數(shù)內(nèi)部this.i聲明的內(nèi)部變量(這就是聲明屬性的方法)。(單純的var i只是局部變量,不是屬性)。
3,var a = {}普通對象,通過a.i引用內(nèi)部i:value方式的值。
?
函數(shù)內(nèi)變量作用域:
函數(shù)內(nèi) var i=0;是局部變量,能屏蔽全局上的i變量。
但函數(shù)內(nèi)直接使用 i=0;表示一個(gè)全局變量。
?
js中閉包的典型用法:
1 <input type='button' id='b1'/> 2 <input type='button' id='b2'/> 3 <input type='button' id='b3'/>上面3個(gè)button,功能一樣——每當(dāng)被點(diǎn)擊,就alert出自己目前為止一共被點(diǎn)擊了多少次;?
那么這個(gè)記錄點(diǎn)擊次數(shù)的變量放在哪里?這3個(gè)button的功能完全一樣,事件函數(shù)可以寫成一個(gè),但卻需要分別設(shè)立變量來存儲自己被點(diǎn)擊了多少次,那么這個(gè)時(shí)候閉包的作用就來了:把他們的事件監(jiān)聽函數(shù)設(shè)置為同一個(gè)函數(shù)的閉包,這樣一來3個(gè)button的點(diǎn)擊次數(shù)就獨(dú)立變化了,且沒有全局變量產(chǎn)生;?
就像下面這樣的代碼:?
function genCount(){var i = 0;return function(){i++;alert(i);} } var a = genCount(); var b = genCount(); a(); b(); b(); b(); a();上述例子,來自該貼中pf_miles的回帖:http://www.iteye.com/topic/569395
還有一個(gè)例子,代碼比較長,地址在這里:http://blog.chinaunix.net/uid-13164110-id-3066361.html
?
以后還是得多寫博客,不然記得好好的東西說忘就忘
?
轉(zhuǎn)載于:https://www.cnblogs.com/lordrobert/p/4020774.html
總結(jié)
- 上一篇: FL2440移植LINUX-3.4.2
- 下一篇: Apache URLRewrite 原理