您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關什么是JavaScript編程,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
值、類型和運算符
A.值
1.為了能夠順利操作非常多的位數據而又不引起數據丟失,我們可以將這些位劃分成表示不同信息的塊,在JS中,我們將這些數據塊稱為值。
2.6種基本的值類型:數字(number)、字符串(string)、布爾值(boolean)、對象(object)、函數(function)和未定義類型(undefined)
B.數字
1.在JS中實際 可存儲的數字范圍是1900萬億,可以使用帶e(指數)的科學技術法,2.998e8=2.99800000
2.使用小數時精度不高
3.JS中三個特殊的值:Infinity、-Infinity和NaN,前兩個表示無窮大和負無窮大,NaN表示“非數值”
C.一元運算符
1.使用兩個值的運算符稱為二元運算符,而使用一個值的則稱為一元運算符。減號運算符即可用作一元運算符,也可用作二元運算符
D.未定義值
1.null和undefined,用于表示無意義的值。它們各自表示其自身含義,除些之外不包含任何信息。
E.自動類型轉換
1.當有些值無法顯式地轉換成數字(比如“five”或undefined),就會產生NaN。請檢查一下是否發生了錯誤的類型轉換。
2.||當左側值可以被轉換成true時,會直接返回左側的值,否則會返回右側的值。所以這個符號的這種功能可用于返回默認值。
3.&&當左側的值可以被轉換成false時,&&運算符會返回左側值,不由返回右側值
4.短路計算:||和&&只有必要時才會計算右側的表達式。
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/1.html
程序結構
A.變量
1.變量并不包含值,而是會引用這些值:兩個不同的變量可以引用相同的值。
B.環境
我們將給定時間內的變量和變量值的集合稱為環境。
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/2.html
函數
A.詞法作用域
任何外部作用域都可以訪問到包含它的臂部作用域的變量。函數內部變量的可見性取決于函數在代碼當中的位置。在包含了一個函數定義的代碼塊中,這個函數可以訪問到代碼塊中的所有變量,即函數上層的代碼塊中的變量和函數內部的變量。這種控制變量可見性的方法稱為詞法作用域(lexical scoping)
B.調用棧
每當函數調用時,當前 的上下文信息就會被存儲在棧頂。而當函數返回時,系統會刪除存儲在棧頂的上下文信息,并使用該信息繼續執行程序
C.閉包
一個包裝了一些局部變量的函數是一個閉包。
D.遞歸
在標準的JS實現當中,遞歸寫法的函數執行效率比循環寫法的函數慢了大約10倍。執行簡單的循環操作比多次函數調用效率要高很多。若程序處理的概念非常復雜,為了確保程序簡單易懂,犧牲一定效率也的確是一種明智的選擇。除非程序執行速度確實太慢,否則先不要關注效率問題。
E.函數及其副作用
相比于直接產生副作用的函數,產生返回值的函數則更容易集成到新的環境當中使用
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/3.html
數據結構:對象和數組
A.JS中兩種最為常用的訪問屬性的方法:使用點(.)和方括號[]。如果使用點,則點之后的部分必須 是一個合法變量名,即直接寫屬性名稱。如果使用方括號,則JS會將方括號中表達式的返回值作為屬性名稱。
B.可以使用in操作符來確定對象中是否包含特定名稱的屬性
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/4.html
高階函數
A.高階函數
1.如果一個函數操作其他函數,即將其他函數作為參數或將函數作為返回值,那么我們可以將其稱為高階函數。
B.map函數
Map方法可以對數組中的每個元素調用函數,然后利用返回值來構建一個新的數組,實現轉換數組的操作。
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/5.html
深入理解對象
A.方法
在調用object.method()時,對象中的一個特殊變量this會指向當前方法所屬的對象
B.原型
1.當開發人員訪問一個對象不包含的屬性時,就會從對象原型中搜索屬性,接著是原型的原型,依此類推。空對象的原型是Object.prototype。
2.許多對象會提供自己通過特殊原型來提供對象自己的默認屬性。函數繼承自Function.prototype,數組繼承自Array.prototype等。
3.Object.getPrototypeOf函數返回的結果是對象原型。可以利用一個特定的原型來使用Object.create方法創建對象
C.構造函數
1.在JS中,調用函數之前使用new則表示調用其構造函數
2.構造函數中包含了指向新對象的變量this,除非構造函數顯式地返回了另一個對象的值,否則構造函數會返回這個新創建的對象
3.通過關鍵字new創建的對象稱之為構造函數的實例
4.構造函數其實就是函數,因此其實際原型是Function.prototype,而構造函數的prototype屬性則是其所創建的實例的原型,而非構造函數自身的原型
D.覆蓋繼承的屬性
如果原型中存在同名屬性,那么在調用該屬性時,就不會再調用原型中的那個屬性了,轉而調用我們添加到對象中的屬性。但原型本身不會被修改。
E.原型污染
1.可以使用Object.defineProperty函數定義自己的不可枚舉屬性,該函數允許我們在創建屬性時控制屬性類型
2.使用對象的hasOwnProperty方法確定自身是否包含某個屬性而不會搜索原型。
F.無原型對象
可以使用Object.create(null)來創建
G.多態
H.Getter與Setter
I.繼承
instanceof運算符會遍歷所有繼承類型
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/6.html
項目實戰:構建電子生態系統
https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/7.html
以上就是什么是JavaScript編程,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。