JS的總結文檔

JS

?js是一種基于對象和事件驅動的并具有相對安全性的客戶端腳本語言蓬网。也是一種廣泛用于web客戶端開發(fā)的腳本語言,常用來給html網(wǎng)頁添加動態(tài)功能,如響應用戶的各種操作型将。

js的數(shù)據(jù)類型有:

? 基本數(shù)據(jù)類型:String、boolean荐虐、Number七兜、undefined、null? ? ? ? 引用數(shù)據(jù)類型:Object福扬、Array腕铸、Date、RegExp忧换、Function

如何判斷數(shù)組數(shù)據(jù)類型:

[if !supportLists]1恬惯、[endif]通過專有方法判斷如:push(),pop();(可自己給變量定義該方法,有時失效)? ? ? ? ? ? ? ? 2亚茬、 obj instanceof Array 返回值判斷酪耳;? ?

? ??? ? ? ? ? ? ? ? 3、es5和jquery都有方法Array.isArray()刹缝。? ? ? ? ? ? ? ? 4碗暗、toString.call(param) 判斷;返回格式 [object

Undefined]? ? ? ? ? ? ? ? 5梢夯、obj.constructor === Function 返回值判斷

js事件流:

“事件冒泡”:事件由最具體的元素接收言疗,然后逐級向上傳播;? ? ?“事件捕捉”:事件由最不具體的節(jié)點先接收颂砸,然后逐級向下噪奄,一直到最具體元素死姚;?

? ?“dom事件流”:三個階段:事件捕捉,目標階段勤篮,事件冒泡都毒;

什么是Ajax和JSON,它們的優(yōu)缺點:

? Ajax(Asynchronous Javascript And XML/異步的javascript和xml)碰缔。

優(yōu)點: 可以使得頁面不重載全部內(nèi)容的情況下加載局部內(nèi)容账劲,降低數(shù)據(jù)傳輸量。避免用戶不斷刷新或者跳轉頁面金抡,提高用戶體驗瀑焦。

?缺點: 對搜索引擎不友好。要實現(xiàn)ajax下的前后退功能成本較大梗肝¢晃停可能造成請求數(shù)的增加⊥炒罚跨域問題限制榆芦。

JSON:json是一種輕量級的數(shù)據(jù)交換格式,ECMA(歐洲計算機制造商協(xié)會)的一個子集喘鸟;

?優(yōu)點:輕量級匆绣,占用帶寬小、易于人的閱讀和編寫什黑,便于機器(js)解析崎淳,支持復合數(shù)據(jù)類型(數(shù)組,對象愕把,字符串拣凹,數(shù)字),能直接為服務器端代碼使用恨豁,大大簡化了服務器端和客戶端的代碼開發(fā)量嚣镜。

?缺點:相對xml通用性較差,數(shù)據(jù)可描述性較差橘蜜;

什么情況會出現(xiàn)undefined:當只聲明變量菊匿,并未賦值初始化的時候這個變量的值就是undefined例如:console.log(a);var a = 10

null是一個只有一個值的數(shù)據(jù)類型,這個值就是null计福。表示一個空指針對象跌捆。所以typeof返回object

雙等號的類型轉換:

var undefined;? ? ? ? undefined ==null; // true

1 == true;??// true

2 == true;??// false

0 == false; // true

0 == '';? ?// true

NaN == NaN; // false

[] == false; // true

[] == ![];??// true

alert(!![])? ? ? ? //true?alert(![])?? ? ? //false

alert([] == 0)? ? ? ? //true

alert(false == 0)? ? ? ? //true

undefined與null但不全等(===)

當為number與string時,會將string轉換為number象颖;

number和boolean時佩厚,會將boolean轉換為number

number或string與Object,會將Object轉換成number或string

js中的數(shù)據(jù)類型轉換

函數(shù)轉換:parseInt()说订、parseFloat()抄瓦、toString()

強類型轉換:Boolean()潮瓶、Number()、String()

弱類型轉換:“==”闺鲸、“-”筋讨、“+”、if()

dom增刪查改:

增:document.createElement(tag);

document.createTextNode();

document.createDocumentFragment();

dom.appendChild(sondom);

dom.insertBefore(newdom,targetdom);

刪:document.removeChild();

改:document.replaceChild();

查:getElementById();getElementsByTagName();getElementsByName();

閉包是什么:

閉包(closure)是javascript的一大難點摸恍,也是它的特色。很多高級應用都要依靠閉包來實現(xiàn)赤屋。

1立镶、變量作用域

要理解閉包,首先要理解javascript的特殊的變量作用域类早。

變量的作用域無非就兩種:全局變量和局部變量媚媒。

javascript語言的特別之處就在于:函數(shù)內(nèi)部可以直接讀取全局變量,但是在函數(shù)外部無法讀取函數(shù)內(nèi)部的局部變量涩僻。

注意點:在函數(shù)內(nèi)部聲明變量的時候缭召,一定要使用var命令。如果不用的話逆日,你實際上聲明的是一個全局變量嵌巷!

2、如何從外部讀取函數(shù)內(nèi)部的局部變量室抽?

出于種種原因搪哪,我們有時候需要獲取到函數(shù)內(nèi)部的局部變量。但是坪圾,上面已經(jīng)說過了晓折,正常情況下,這是辦不到的兽泄!只有通過變通的方法才能實現(xiàn)漓概。

那就是在函數(shù)內(nèi)部,再定義一個函數(shù)病梢。

3胃珍、閉包的概念

上面代碼中的f2函數(shù),就是閉包飘千。

各種專業(yè)文獻的閉包定義都非常抽象堂鲜,我的理解是:?閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。

由于在javascript中护奈,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量缔莲,所以說,閉包可以簡單理解成“定義在一個函數(shù)內(nèi)部的函數(shù)“霉旗。

所以痴奏,在本質上蛀骇,閉包是將函數(shù)內(nèi)部和函數(shù)外部連接起來的橋梁瞳氓。

?4夺颤、閉包的用途

閉包可以用在許多地方。它的最大用處有兩個倍阐,一個是前面提到的可以讀取函數(shù)內(nèi)部的變量檐晕,另一個就是讓這些變量的值始終保持在內(nèi)存中暑诸,不會在f1調(diào)用后被自動清除。

為什么會這樣呢辟灰?原因就在于f1是f2的父函數(shù)个榕,而f2被賦給了一個全局變量,這導致f2始終在內(nèi)存中芥喇,而f2的存在依賴于f1西采,因此f1也始終在內(nèi)存中,不會在調(diào)用結束后继控,被垃圾回收機制(garbage

collection)回收械馆。

這段代碼中另一個值得注意的地方,就是"nAdd=function(){n+=1}"這一行武通,首先在nAdd前面沒有使用var關鍵字霹崎,因此nAdd是一個全局變量,而不是局部變量厅须。其次仿畸,nAdd的值是一個匿名函數(shù)(anonymous function),而這個匿名函數(shù)本身也是一個閉包朗和,所以nAdd相當于是一個setter错沽,可以在函數(shù)外部對函數(shù)內(nèi)部的局部變量進行操作。

5眶拉、使用閉包的注意點

(1)由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中千埃,內(nèi)存消耗很大,所以不能濫用閉包忆植,否則會造成網(wǎng)頁的性能問題放可,在IE中可能導致內(nèi)存泄露。解決方法是朝刊,在退出函數(shù)之前耀里,將不使用的局部變量全部刪除。

(2)閉包會在父函數(shù)外部拾氓,改變父函數(shù)內(nèi)部變量的值冯挎。所以,如果你把父函數(shù)當作對象(object)使用咙鞍,把閉包當作它的公用方法(Public Method)房官,把內(nèi)部變量當作它的私有屬性(private value)趾徽,這時一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值翰守。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孵奶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜡峰,更是在濱河造成了極大的恐慌了袁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件事示,死亡現(xiàn)場離奇詭異早像,居然都是意外死亡,警方通過查閱死者的電腦和手機肖爵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臀脏,“玉大人劝堪,你說我怎么就攤上這事∪嘀桑” “怎么了秒啦?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搀玖。 經(jīng)常有香客問我余境,道長,這世上最難降的妖魔是什么灌诅? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任芳来,我火速辦了婚禮,結果婚禮上猜拾,老公的妹妹穿的比我還像新娘即舌。我一直安慰自己,他們只是感情好挎袜,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布顽聂。 她就那樣靜靜地躺著,像睡著了一般盯仪。 火紅的嫁衣襯著肌膚如雪紊搪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天全景,我揣著相機與錄音耀石,去河邊找鬼。 笑死蚪燕,一個胖子當著我的面吹牛娶牌,可吹牛的內(nèi)容都是我干的奔浅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诗良,長吁一口氣:“原來是場噩夢啊……” “哼汹桦!你這毒婦竟也來了?” 一聲冷哼從身側響起鉴裹,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤舞骆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后径荔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體督禽,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年总处,在試婚紗的時候發(fā)現(xiàn)自己被綠了狈惫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹦马,死狀恐怖胧谈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荸频,我是刑警寧澤菱肖,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站旭从,受9級特大地震影響稳强,放射性物質發(fā)生泄漏。R本人自食惡果不足惜和悦,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一退疫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摹闽,春花似錦蹄咖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舵匾,卻和暖如春俊抵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坐梯。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工徽诲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓谎替,卻偏偏與公主長得像偷溺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钱贯,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容