摘要:只是瀏覽器只是實(shí)現(xiàn)可能的宿主環(huán)境之一,其他宿主環(huán)境包括和。級(jí)別級(jí)由兩個(gè)模塊組成核心和。有效不推薦有一點(diǎn)必須注意,即用操作符定義的變量將成為定義該變量的作用域的局部變量。會(huì)返回判斷相等符認(rèn)為兩者相等。顯示因此盡量避免這樣運(yùn)算。
一:JavaScript組成部分
JavaScript是由三個(gè)不同部分組成的,核心(ECMAScript) 、文檔對(duì)象模型(DOM)和瀏覽器對(duì)象模型(BOM)。
1.ECMAScriptECMAScript與Web瀏覽器沒有依賴關(guān)系。只是Web瀏覽器只是ECMAScript實(shí)現(xiàn)可能的宿主環(huán)境之一,其他宿主環(huán)境包括Node和Adobe Flash。它規(guī)定了這門語言的組成部分:
1.語法
2.類型
3.關(guān)鍵字
4.保留字
5.操作符
6.對(duì)象
文檔對(duì)象模型(Document Object Model)是針對(duì)XML但經(jīng)過擴(kuò)張用于HTML的應(yīng)用程序編程接口(API,Application Programming Interface)。DOM把整個(gè)頁面映射為一個(gè)多層次節(jié)點(diǎn)結(jié)構(gòu)。以HTML代碼為例子
DOM DOM
Hello world
根據(jù) DOM,HTML 文檔中的每個(gè)成分都是一個(gè)節(jié)點(diǎn)。DOM 是這樣規(guī)定的:整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)。每個(gè) HTML 標(biāo)簽是一個(gè)元素節(jié)點(diǎn)。包含在 HTML 元素中的文本是文本節(jié)點(diǎn)。每一個(gè) HTML 屬性是一個(gè)屬性節(jié)點(diǎn)。注釋屬于注釋節(jié)點(diǎn)
每個(gè)節(jié)點(diǎn)彼此都有等級(jí)關(guān)系,HTML 文檔中的所有節(jié)點(diǎn)組成了一個(gè)文檔樹(或節(jié)點(diǎn)樹)。HTML 文檔中的每個(gè)元素、屬性、文本等都代表著樹中的一個(gè)節(jié)點(diǎn)。樹起始于文檔節(jié)點(diǎn),并由此繼續(xù)伸出枝條,直到處于這棵樹最低級(jí)別的所有文本節(jié)點(diǎn)為止。除文檔節(jié)點(diǎn)之外的每個(gè)節(jié)點(diǎn)都有父節(jié)點(diǎn)。
以上列代碼分析,
節(jié)點(diǎn)。
大部分元素節(jié)點(diǎn)都有子節(jié)點(diǎn)。比方說,
是同輩,因?yàn)樗鼈兊母腹?jié)點(diǎn)均是
DOM1級(jí)由兩個(gè)模塊組成:DOM核心和DOM HTML。其中,DOM核心規(guī)定是如何映射基于基于XML的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔中任意部分的訪問和操作,DOM HTML則在DOM核心的基礎(chǔ)上加以擴(kuò)展,添加了針對(duì)HTML文檔的對(duì)象和方法。
DOM2級(jí)在DOM的基礎(chǔ)上又?jǐn)U展了鼠標(biāo)和用戶界面事件、范圍、遍歷(迭代DOM文檔的方法)等細(xì)分模塊,而且通過對(duì)象接口增加對(duì)CSS的支持。
DOM3級(jí)則進(jìn)一步擴(kuò)展了DOM,引入了以統(tǒng)一方式加載和保存文檔方法—在DOM加載和保存模塊中定義;新增了驗(yàn)證文檔的方法—在DOM驗(yàn)證模塊定義。
開發(fā)人員可以通過BOM來控制瀏覽器顯示的頁面以外的部分。從根本上講,BOM只處理瀏覽器窗口和框架;但人們習(xí)慣也把所有針對(duì)瀏覽器的JavaScript擴(kuò)展算作BOM一部分。
1.彈出新瀏覽器窗口功能;
2.移動(dòng)、縮放和關(guān)閉瀏覽器窗口的功能;
3.提供瀏覽器詳細(xì)信息的navigatior對(duì)象;
4.提供瀏覽器所加載頁面的詳細(xì)信息的location對(duì)象;
5.提供用戶顯示器分辨率詳細(xì)信息的scree對(duì)象
6.對(duì)cookies的支持
7.像XMLHttpRequest和IE的ActiveXObject這樣的自定義對(duì)象。
在HTML中插入JavaScript的主要方法,就是使用"); } 時(shí)候,就會(huì)認(rèn)為那是結(jié)束的標(biāo)簽。而通過轉(zhuǎn)義字符""解決這個(gè)問題,例如:
"); }三:JavaScript 基本概念
3.1 區(qū)分大小寫
JavaScript是區(qū)分大小寫的,也就是說變量、函數(shù)、關(guān)鍵字和所有標(biāo)識(shí)符都是區(qū)分大小寫的。
所謂的標(biāo)識(shí)符,就是指得是變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。標(biāo)識(shí)符可以是按照下列格式規(guī)則組合起來的一或多個(gè)字符:
a.第一個(gè)字符必須是一個(gè)字母、下劃線或一個(gè)美元符號(hào)($); b.其他字符可以是字母、下劃線、美元符號(hào)或數(shù)字。
3.2 注釋
JavaScript支持兩種注釋,包括單行注釋和塊級(jí)注釋。
單行注釋以//開頭,如://單行注釋
多行注釋則以一個(gè)斜杠和一個(gè)星號(hào)(/)開頭 以一個(gè)星號(hào)和一個(gè)斜杠( /)結(jié)尾。
3.3保留字和關(guān)鍵字
JavaScript把一些標(biāo)識(shí)符拿出來作為自己的關(guān)鍵字。因此,不能再在程序使用這些關(guān)鍵字作為標(biāo)識(shí)符。如break、do、instanceof、typeof、var、case、if、while、function 和for等等...
保留字雖然還沒有任何特定的用途,但它們將來可能用作關(guān)鍵字。如:int、short、boolean、goto和byte。
3.3變量
JavaScript的變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。換句話說,每個(gè)變量?jī)H僅是一個(gè)保存值的占位符而已。定義變量時(shí)候要使用var操作符,后跟變量名(標(biāo)識(shí)符):var message;初始化的過程就是給變量賦一個(gè)值,因此,可以在修改變量值同時(shí)修改值的類型。
var message = "hi"; message = 100 //有效不推薦
有一點(diǎn)必須注意,即用var操作符定義的變量將成為定義該變量的作用域的局部變量。也就是說,在函數(shù)中使用var定義一個(gè)變量,那么這個(gè)變量在函數(shù)退出后就會(huì)銷毀,除非定義一個(gè)全局變量。
function test(){ var a = "hello,wythe";//局部變量 b = "hello world";//全局變量 } test() console.log(a)//錯(cuò)誤,a沒有定義。 console.log(b)//hello,world
3.4數(shù)據(jù)類型
JavaScript的數(shù)據(jù)類型分為兩類:原始類型和對(duì)象類型。原始類型包括數(shù)字(numner)、字符串(string)、布爾值(boolean)、undefined和null。對(duì)象類型則有object,object是屬性的集合,每個(gè)屬性都由名/值對(duì)(值可以是原始值,比如數(shù)字、字符串,也可以是對(duì)象)構(gòu)成。
3.4.1typeof操作符
由于JavaScript是松散類型,因此需要有一種手段來檢測(cè)給定變量的數(shù)據(jù)類型——typeof。對(duì)一個(gè)變量使用typeof操作符可能返回下列字符串:
"undefined"—如果這個(gè)值未定義;
"boolean"—如果這個(gè)值是布爾值;
"string"—如果這個(gè)值是字符串;
"number"—如果這個(gè)值是數(shù)值;
"object"—如果這個(gè)值是對(duì)象或null 數(shù)組也是對(duì)象,數(shù)組是一種特殊對(duì)象,表示帶編號(hào)的值的有序集合
"function"—如果這個(gè)值是函數(shù)。函數(shù)是一種特殊對(duì)象,函數(shù)具有與它相關(guān)聯(lián)的可執(zhí)行代碼的對(duì)象。通過調(diào)用函數(shù)來運(yùn)行可執(zhí)行代碼,并返回運(yùn)算結(jié)果
對(duì)于null,typeof返回的是object,那是因?yàn)閚ull被認(rèn)為是一個(gè)空對(duì)象的引用。
3.4.1 undefined類型
undefined類型只有一個(gè)值,那就是undefined。是變量的一種取值,表明值沒有初始化。
3.4.2 null類型
null類型也是只有一個(gè)值,那就是null。typeof null 返回的是"object"也就是可以認(rèn)為是一個(gè)特殊的對(duì)象值,含義是“非對(duì)象”。
undefined跟null都是表示值的空缺。null == undefined 會(huì)返回true 判斷相等符“==” 認(rèn)為兩者相等。這個(gè)操作符出于比較的目的會(huì)轉(zhuǎn)換其操作數(shù)。
3.4.3 number類型
JavaScript是不區(qū)分整數(shù)值和浮點(diǎn)數(shù)值的。最基本的字面量格式是十進(jìn)制整數(shù),除了十進(jìn)制以外,還支持八位制(在嚴(yán)格模式下無效)或十六進(jìn)制的字面值表示。浮點(diǎn)數(shù)值,就是該數(shù)值中必須包含一個(gè)小數(shù)點(diǎn),并且小數(shù)點(diǎn)后面必須至少有一位數(shù)字。浮點(diǎn)數(shù)值的最高精度是17位小數(shù),但在進(jìn)行算術(shù)計(jì)算的時(shí)候其精確度遠(yuǎn)遠(yuǎn)不如整數(shù)。
var a = 0.1, b = 0.2; if(a+b == 0.3){ console.log("bingo"); }else{ console.log("error");//顯示error }
因此盡量避免這樣運(yùn)算。NaN,即非數(shù)值是個(gè)特殊的值,這個(gè)數(shù)值表示一個(gè)本來要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況。0除以0會(huì)返回NaN,正數(shù)除以0返回Infinity,負(fù)數(shù)除以0返回-Infinity。NaN與任何值都不相等,包括自身。因此JavaScript定義isNaN函數(shù),isNaN接受一個(gè)參數(shù),該參數(shù)可以是任何類型,函數(shù)會(huì)判斷該參數(shù)是否“不是數(shù)值”。isNaN接收一個(gè)之后,會(huì)嘗試把這個(gè)值轉(zhuǎn)為數(shù)值。
isNaN(1); //false isNaN("10");//會(huì)轉(zhuǎn)換為數(shù)值10,返回false isNaN(true);//轉(zhuǎn)換為數(shù)值1,返回false isNaN("blue");//不能轉(zhuǎn)換為數(shù)值,返回true isNaN("true");//不能轉(zhuǎn)為數(shù)值,返回true isNaN("11blue");//true,不能轉(zhuǎn)為數(shù)值
數(shù)值轉(zhuǎn)換有3個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和parseFloat().第一個(gè)函數(shù)(Number)可以用于任何數(shù)據(jù)類型,而另兩個(gè)函數(shù)專門把字符串轉(zhuǎn)換為數(shù)值。
Number()函數(shù)的轉(zhuǎn)換規(guī)則如下:
如果是布爾值true和false,則分別轉(zhuǎn)換為1和0
如果是數(shù)字值,則返回該數(shù)值
如果是null值,則返回0
如果是undefined,則返回NaN
如果是字符串,如果字符串只包含數(shù)字的話,則將其轉(zhuǎn)為十進(jìn)制數(shù)值,即“1”轉(zhuǎn)為1,“123”則是123,“011”轉(zhuǎn)為11(忽略前導(dǎo)的0),“11.1”則為11.1,"0xf"則轉(zhuǎn)為相同大小的十進(jìn)制整數(shù)。如果字符串是空,則將轉(zhuǎn)為0;除此以外其他字符串,則轉(zhuǎn)為NaN(“122blue”,“0a”,"a")。
如果是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,然后按照前面規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對(duì)象toString()方法,再次按照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
譬如Number({a:2})返回的是NaN,而Number([1])返回的是1
未完待續(xù)...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80013.html
摘要:請(qǐng)回復(fù)這個(gè)帖子并注明組織個(gè)人信息來申請(qǐng)加入。權(quán)限分配靈活,能者居之。數(shù)量超過個(gè),在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。導(dǎo)航歸檔社區(qū)自媒體平臺(tái)微博知乎專欄公眾號(hào)博客園簡(jiǎn)書合作侵權(quán),請(qǐng)聯(lián)系請(qǐng)抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...
摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。異步編程入門的全稱是前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。 TypeScript 入門教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進(jìn)的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識(shí)之 HTTP 協(xié)議 詳細(xì)介紹 HTT...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...
摘要:請(qǐng)回復(fù)這個(gè)帖子并注明組織個(gè)人信息來申請(qǐng)加入。版筆記等到中文字幕翻譯完畢后再整理。數(shù)量超過個(gè),在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。主頁歸檔社區(qū)自媒體平臺(tái)微博知乎專欄公眾號(hào)博客園簡(jiǎn)書合作侵權(quán),請(qǐng)聯(lián)系請(qǐng)抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...
摘要:筆者作為一位,將工作以來用到的各種優(yōu)秀資料神器及框架整理在此,畢竟好記性不如爛鍵盤,此前端知識(shí)點(diǎn)大百科全書前端掘金,,不定期更新技巧前端掘金技巧,偶爾更新。計(jì)算數(shù)組的極值技巧使你的更加專業(yè)前端掘金一個(gè)幫你提升技巧的收藏集。 CSS 樣式畫各種圖形 - 前端 - 掘金下面是一些我在 CSS 中經(jīng)常用到的圖案,還有一些是在css-tricks看到的。記錄一下,以后會(huì)用到。會(huì)持續(xù)更新… 一、...
閱讀 2538·2023-04-26 02:57
閱讀 1420·2023-04-25 21:40
閱讀 2198·2021-11-24 09:39
閱讀 3572·2021-08-30 09:49
閱讀 779·2019-08-30 15:54
閱讀 1181·2019-08-30 15:52
閱讀 2096·2019-08-30 15:44
閱讀 1284·2019-08-28 18:27