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