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