溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是JavaScript編程

發(fā)布時間:2021-09-30 09:36:35 來源:億速云 閱讀:125 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關什么是JavaScript編程,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

值、類型和運算符

A.值

1.為了能夠順利操作非常多的位數(shù)據(jù)而又不引起數(shù)據(jù)丟失,我們可以將這些位劃分成表示不同信息的塊,在JS中,我們將這些數(shù)據(jù)塊稱為值。

2.6種基本的值類型:數(shù)字(number)、字符串(string)、布爾值(boolean)、對象(object)、函數(shù)(function)和未定義類型(undefined)

B.數(shù)字

1.在JS中實際 可存儲的數(shù)字范圍是1900萬億,可以使用帶e(指數(shù))的科學技術法,2.998e8=2.99800000

2.使用小數(shù)時精度不高

3.JS中三個特殊的值:Infinity、-Infinity和NaN,前兩個表示無窮大和負無窮大,NaN表示“非數(shù)值”

C.一元運算符

1.使用兩個值的運算符稱為二元運算符,而使用一個值的則稱為一元運算符。減號運算符即可用作一元運算符,也可用作二元運算符

D.未定義值

1.null和undefined,用于表示無意義的值。它們各自表示其自身含義,除些之外不包含任何信息。

E.自動類型轉換

1.當有些值無法顯式地轉換成數(shù)字(比如“five”或undefined),就會產生NaN。請檢查一下是否發(fā)生了錯誤的類型轉換。

2.||當左側值可以被轉換成true時,會直接返回左側的值,否則會返回右側的值。所以這個符號的這種功能可用于返回默認值。

3.&&當左側的值可以被轉換成false時,&&運算符會返回左側值,不由返回右側值

4.短路計算:||和&&只有必要時才會計算右側的表達式。

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/1.html


程序結構

A.變量

1.變量并不包含值,而是會引用這些值:兩個不同的變量可以引用相同的值。

B.環(huán)境

我們將給定時間內的變量和變量值的集合稱為環(huán)境。

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/2.html


函數(shù)

A.詞法作用域

任何外部作用域都可以訪問到包含它的臂部作用域的變量。函數(shù)內部變量的可見性取決于函數(shù)在代碼當中的位置。在包含了一個函數(shù)定義的代碼塊中,這個函數(shù)可以訪問到代碼塊中的所有變量,即函數(shù)上層的代碼塊中的變量和函數(shù)內部的變量。這種控制變量可見性的方法稱為詞法作用域(lexical scoping)

B.調用棧

每當函數(shù)調用時,當前 的上下文信息就會被存儲在棧頂。而當函數(shù)返回時,系統(tǒng)會刪除存儲在棧頂?shù)纳舷挛男畔?,并使用該信息繼續(xù)執(zhí)行程序

C.閉包

一個包裝了一些局部變量的函數(shù)是一個閉包。

D.遞歸

在標準的JS實現(xiàn)當中,遞歸寫法的函數(shù)執(zhí)行效率比循環(huán)寫法的函數(shù)慢了大約10倍。執(zhí)行簡單的循環(huán)操作比多次函數(shù)調用效率要高很多。若程序處理的概念非常復雜,為了確保程序簡單易懂,犧牲一定效率也的確是一種明智的選擇。除非程序執(zhí)行速度確實太慢,否則先不要關注效率問題。

E.函數(shù)及其副作用

相比于直接產生副作用的函數(shù),產生返回值的函數(shù)則更容易集成到新的環(huán)境當中使用

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/3.html


數(shù)據(jù)結構:對象和數(shù)組

A.JS中兩種最為常用的訪問屬性的方法:使用點(.)和方括號[]。如果使用點,則點之后的部分必須 是一個合法變量名,即直接寫屬性名稱。如果使用方括號,則JS會將方括號中表達式的返回值作為屬性名稱。

B.可以使用in操作符來確定對象中是否包含特定名稱的屬性

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/4.html


高階函數(shù)

A.高階函數(shù)

1.如果一個函數(shù)操作其他函數(shù),即將其他函數(shù)作為參數(shù)或將函數(shù)作為返回值,那么我們可以將其稱為高階函數(shù)。

B.map函數(shù)

Map方法可以對數(shù)組中的每個元素調用函數(shù),然后利用返回值來構建一個新的數(shù)組,實現(xiàn)轉換數(shù)組的操作。

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/5.html

深入理解對象

A.方法

在調用object.method()時,對象中的一個特殊變量this會指向當前方法所屬的對象

B.原型

1.當開發(fā)人員訪問一個對象不包含的屬性時,就會從對象原型中搜索屬性,接著是原型的原型,依此類推??諏ο蟮脑褪荗bject.prototype。

2.許多對象會提供自己通過特殊原型來提供對象自己的默認屬性。函數(shù)繼承自Function.prototype,數(shù)組繼承自Array.prototype等。

3.Object.getPrototypeOf函數(shù)返回的結果是對象原型??梢岳靡粋€特定的原型來使用Object.create方法創(chuàng)建對象

C.構造函數(shù)

1.在JS中,調用函數(shù)之前使用new則表示調用其構造函數(shù)

2.構造函數(shù)中包含了指向新對象的變量this,除非構造函數(shù)顯式地返回了另一個對象的值,否則構造函數(shù)會返回這個新創(chuàng)建的對象

3.通過關鍵字new創(chuàng)建的對象稱之為構造函數(shù)的實例

4.構造函數(shù)其實就是函數(shù),因此其實際原型是Function.prototype,而構造函數(shù)的prototype屬性則是其所創(chuàng)建的實例的原型,而非構造函數(shù)自身的原型

D.覆蓋繼承的屬性

如果原型中存在同名屬性,那么在調用該屬性時,就不會再調用原型中的那個屬性了,轉而調用我們添加到對象中的屬性。但原型本身不會被修改。

E.原型污染

1.可以使用Object.defineProperty函數(shù)定義自己的不可枚舉屬性,該函數(shù)允許我們在創(chuàng)建屬性時控制屬性類型

2.使用對象的hasOwnProperty方法確定自身是否包含某個屬性而不會搜索原型。

F.無原型對象

可以使用Object.create(null)來創(chuàng)建

G.多態(tài)

H.Getter與Setter

I.繼承

instanceof運算符會遍歷所有繼承類型

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/6.html

項目實戰(zhàn):構建電子生態(tài)系統(tǒng)

https://github.com/zhangyue0503/html5js/blob/master/eloquentjs/7.html

以上就是什么是JavaScript編程,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI