亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

一眼看穿

jsdt / 2861人閱讀

摘要:,返回對(duì)象的字符串表示。布爾操作符邏輯非號(hào)表示返回一個(gè)布爾值,可以應(yīng)用于中的任何值規(guī)則如果操作數(shù)是一個(gè)對(duì)象,返回如果操作數(shù)是一個(gè)空字符串,返回如果操作數(shù)是一個(gè)非空字符串,返回如果操作數(shù)是數(shù)值,返回如果操作數(shù)是任

前段時(shí)間忙,好久沒(méi)更新了,繼續(xù)梳理基礎(chǔ)知識(shí)
這期總結(jié)的是JS的基本概念
標(biāo)識(shí)符

所謂的標(biāo)識(shí)符是指變量,函數(shù)屬性的名字,或者函數(shù)的參數(shù)

第一個(gè)字符必須是一個(gè)字母,下劃線(xiàn)(_)或者一個(gè)美元符號(hào)($),其他字母可以是字母,下劃線(xiàn),美元符號(hào)或數(shù)字。

嚴(yán)格模式

嚴(yán)格模式是為JS定義一種不同的解析與執(zhí)行模型,要啟用嚴(yán)格模式,可添加如下代碼

"use strict"
添加區(qū)域

想要整個(gè)腳本都啟用,則加到腳本頂部

想在某個(gè)函數(shù)體內(nèi)啟用,則在函數(shù)體內(nèi)的頂部添加

添加目的

消除Javascript語(yǔ)法的一些不合理、不嚴(yán)謹(jǐn)之處,減少一些怪異行為

消除代碼運(yùn)行的一些不安全之處,保證代碼運(yùn)行的安全

提高編譯器效率,增加運(yùn)行速度

為未來(lái)新版本的Javascript做好鋪墊

變量

ECMAScript的變量是松散類(lèi)型的,所謂松散類(lèi)型就是可以用來(lái)保存任何類(lèi)型的數(shù)據(jù)

變量的定義

var

let(ES6引入)

數(shù)據(jù)類(lèi)型

ECMAScript中有7種數(shù)據(jù)類(lèi)型,其中6種是基本數(shù)據(jù)類(lèi)型,1種是復(fù)雜數(shù)據(jù)類(lèi)型
基本數(shù)據(jù)類(lèi)型 String,Number,Boolean,Null,Undefined,Symbol
復(fù)雜數(shù)據(jù)類(lèi)型 Object

typeof操作符

typeof操作符用于判斷數(shù)據(jù)類(lèi)型,可返回值有

string

number

boolean

undefined

object

function

symbol

typeof對(duì)于基本類(lèi)型,除了null都可以顯示正確類(lèi)型

typeof對(duì)于對(duì)象,除了函數(shù)都會(huì)顯示 object

對(duì)于 null 來(lái)說(shuō),雖然它是基本類(lèi)型,但是會(huì)顯示 object,這是一個(gè)存在很久了的 Bug,因?yàn)樵?JS 的最初版本中,使用的是 32位系統(tǒng),為了性能考慮使用低位存儲(chǔ)了變量的類(lèi)型信息,000 開(kāi)頭代表是對(duì)象,然而 null 表示為全零,所以將它錯(cuò)誤的判斷為 object。雖然現(xiàn)在的內(nèi)部類(lèi)型判斷代碼已經(jīng)改變了,但是對(duì)于這個(gè) Bug 卻是一直流傳下來(lái)。

如果我們想獲得一個(gè)變量的正確類(lèi)型,可以通過(guò) Object.prototype.toString.call(xx)。這樣我們就可以獲得類(lèi)似 [object Type] 的字符串。

只有一個(gè)值的數(shù)據(jù)類(lèi)型:undefined,null

如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象,那么最好將該變量初始化為null而不是其他值,這樣一來(lái),只要直接檢查null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用

實(shí)際上,undefined值是派生自null值的,因此對(duì)他們的相等性測(cè)試要返回true
也就是說(shuō)

null == undefined // true
null === undefined // false
Boolean(any :any) :boolean

n/a 或 N/A 指不適用的意思

數(shù)據(jù)類(lèi)型 轉(zhuǎn)換為true的值 轉(zhuǎn)換為false的值
Boolean true false
String 任何非空字符串 **(空字符串)
Number 任何非零數(shù)字值(包括無(wú)窮大) 0和NaN
Object 任何對(duì)象 null
undefined n/a undefined
null n/a null
Number類(lèi)型

八進(jìn)制字面值的第一位必須是零(0),十六進(jìn)制的字面值的前兩位必須是0x

八進(jìn)制字面量在嚴(yán)格模式下是無(wú)效的,會(huì)導(dǎo)致支持該模式的JS引擎拋出錯(cuò)誤

在進(jìn)行算數(shù)計(jì)算時(shí),所有以八進(jìn)制和十六進(jìn)制表示的數(shù)值最終都將被轉(zhuǎn)換成十進(jìn)制的值

保存浮點(diǎn)數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍

isFinite()函數(shù)可用于測(cè)試一個(gè)數(shù)值是不是有窮的

NaN

NaN,即非數(shù)值,是一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況,這樣做可以防止拋出錯(cuò)誤而停止代碼執(zhí)行

NaN特點(diǎn)

任何涉及NaN(例:NaN/6)都會(huì)返回NaN

NaN與任何值都不相等,包括NaN本身

isNaN()該函數(shù)可用于確認(rèn)參數(shù)是否"不是數(shù)值",該函數(shù)接收到一個(gè)值后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值,而任何不能被轉(zhuǎn)換為數(shù)值的值都會(huì)導(dǎo)致這個(gè)函數(shù)返回true

數(shù)值轉(zhuǎn)換

有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值: Number()、parseInt()和parseFloat(),Number()適用于任何數(shù)據(jù)類(lèi)型,而后者則專(zhuān)門(mén)用于把字符串轉(zhuǎn)換成數(shù)值。

Number(any :any) :number

boolean: true和false分別被轉(zhuǎn)換成0和1

number: 返回原值

null: 返回0

undefined: 返回NaN

string:

字符串只包含數(shù)字,則將其轉(zhuǎn)換成十進(jìn)制數(shù)值

字符串中包含有效的浮點(diǎn)格式,則將其轉(zhuǎn)換為相應(yīng)的浮點(diǎn)數(shù)值

字符串中包含有效的十六進(jìn)制格式,則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值

字符串為空,轉(zhuǎn)換成0

字符串中包含除上述格式之外的字符,將其轉(zhuǎn)換成NaN

object: 會(huì)先調(diào)用對(duì)象的valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值,如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對(duì)象toString()方法,然后再次依照前面規(guī)則轉(zhuǎn)換返回的字符串值

parseInt(str: string, base?: number) :number

轉(zhuǎn)換成字符串時(shí),會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符,如果第一個(gè)字符不是數(shù)字字符或者負(fù)號(hào),則會(huì)返回NaN

該函數(shù)會(huì)一直解析,直到遇到一個(gè)非數(shù)字字符,則停止轉(zhuǎn)換。例:parseInt("123abc") // 123

遇到浮點(diǎn)數(shù)字符串,則會(huì)去小數(shù)取整。例parseInt("11.3") // 11

如果以O(shè)x開(kāi)頭且后面跟數(shù)字字符,會(huì)將其當(dāng)做一個(gè)十六進(jìn)制整數(shù),如果字符串以0開(kāi)頭后跟數(shù)字字符,則會(huì)將其當(dāng)作一個(gè)八進(jìn)制數(shù)來(lái)解析

第二個(gè)參數(shù)是可選的,代表進(jìn)制,十六進(jìn)制則填16

parseFloat(str: string) :number

parseFloat和parseInt類(lèi)似,只不過(guò)他可以解析整數(shù)和浮點(diǎn)數(shù)

該函數(shù)只能解析十進(jìn)制值,因此它沒(méi)有用第二個(gè)參數(shù)指定基數(shù)的用法

String類(lèi)型

字符串的特點(diǎn)是不可變的,也就是說(shuō),字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個(gè)變量保存的字符串,首先要銷(xiāo)毀原來(lái)的字符串,然后再用另一個(gè)包含新值的字符串填充該變量。

toString(base ?: number) :string

該方法用于將一個(gè)值轉(zhuǎn)換為字符串類(lèi)型,幾乎所有類(lèi)型都有這個(gè)函數(shù),除了null和undefined, 該函數(shù)有個(gè)參數(shù),用于設(shè)置輸出數(shù)值的基數(shù)。

String(any :any) :string

該函數(shù)能將任何類(lèi)型轉(zhuǎn)換成字符串

規(guī)則:

如果值有toString()方法, 則調(diào)用該方法(沒(méi)有參數(shù))并返回相應(yīng)的結(jié)果

如果值是null,則返回"null"

如果值是undefined,則返回"undefined"

Object類(lèi)型

在ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。對(duì)象可以通過(guò)執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類(lèi)型的名稱(chēng)來(lái)創(chuàng)建。在不給構(gòu)造函數(shù)傳遞參數(shù)時(shí),括號(hào)可省略。
所有引用類(lèi)型的值都是Object的實(shí)例

僅僅創(chuàng)建Object的實(shí)例并沒(méi)有什么用處,關(guān)鍵是要理解一個(gè)重要的思想: 在ECMAScript中,Object類(lèi)型是它的實(shí)例的基礎(chǔ),換句話(huà)說(shuō),Object類(lèi)型所具有的任何屬性和方法也同樣存在于更具體的對(duì)象中。
每個(gè)對(duì)象都具有下列屬性和方法

constructor: 保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù),對(duì)于前面的例子而言,構(gòu)造函數(shù)就是Object()

hasOwnProperty(propertyName: string) :boolean, 用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是實(shí)例的原型中)是否存在。其中,作為參數(shù)的屬性名(propertyName)必須以字符串形式指定。

toLocaleString() :string, 返回對(duì)象的字符串表示,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)。

toString() :string, 返回對(duì)象的字符串表示。

valueOf() ,返回對(duì)象的字符串、數(shù)值或布爾值表示,通常與toString() 方法的返回值相同。

操作符 一元操作符(只能操作一個(gè)值的操作符) 遞增遞減操作符(++, --),包括兩類(lèi),前置型和后置型

前置型指將操作符放在數(shù)值變量前面,在計(jì)算數(shù)值時(shí)優(yōu)先執(zhí)行變量數(shù)值

后置型指將操作符放在數(shù)值變量后面,在計(jì)算數(shù)值時(shí)最后執(zhí)行變量數(shù)值

遞增遞減操作符適用于任何類(lèi)型的值,它遵循如下規(guī)則

字符串?dāng)?shù)字類(lèi)型時(shí),先將其轉(zhuǎn)換為數(shù)字值,再執(zhí)行加減操作,字符串變量變成數(shù)值變量。

非字符串?dāng)?shù)字類(lèi)型時(shí),將變量值設(shè)置為NaN,字符串變量變成數(shù)值變量。

布爾類(lèi)型時(shí),先將其轉(zhuǎn)換成0或1,再執(zhí)行加減操作,布爾值變量變成數(shù)值變量。

浮點(diǎn)類(lèi)型時(shí),直接執(zhí)行加減1操作。

對(duì)象時(shí),先調(diào)用對(duì)象的valueOf()方法,已取得一個(gè)可供操作的值,然后對(duì)該值應(yīng)用前述規(guī)則。如果結(jié)果是NaN,則在調(diào)用toString()方法后再應(yīng)用前述規(guī)則,對(duì)象變量變成數(shù)值變量

一元加和減操作符

對(duì)數(shù)值應(yīng)用一元加減操作符時(shí),代表正負(fù)號(hào)。

對(duì)非數(shù)值應(yīng)用一元加減操作符時(shí),相當(dāng)于調(diào)用Number()函數(shù)。

位操作符

ECMAScript中的所有數(shù)值都以64位格式存儲(chǔ),但位操作符不能直接操作64位的值,而是先將64位的值轉(zhuǎn)換成32位的整數(shù),然后執(zhí)行操作,最后再將結(jié)果轉(zhuǎn)換成回64位。

對(duì)于有符號(hào)的整數(shù),32位中的前31位用于表示整數(shù)的值,第32位用于表示數(shù)值的符號(hào),0表示整數(shù),1表示負(fù)數(shù)。

負(fù)數(shù)同樣以二進(jìn)制碼存儲(chǔ),但使用的格式是二進(jìn)制補(bǔ)碼,計(jì)算一個(gè)數(shù)值的二進(jìn)制補(bǔ)碼需要經(jīng)過(guò)下列步驟

求這個(gè)數(shù)值絕對(duì)值的二進(jìn)制碼。

求二進(jìn)制反碼,即將0替換為1,1替換為0

得到的二進(jìn)制反碼加1

按位非

該操作符用一條波浪線(xiàn)(~)表示,執(zhí)行按位非的結(jié)果就是返回?cái)?shù)值的反碼。

按位非操作的本質(zhì):操作數(shù)的負(fù)值減1

按位與

該操作符用一個(gè)和號(hào)字符(&)表示,它有兩個(gè)操作符數(shù),同1得1,有0得0。

按位或

該操作符用一個(gè)豎線(xiàn)符號(hào)(|)表示,它有兩個(gè)操作符數(shù),有1得1,同0得0。

按位異或

該操作符用一個(gè)插入符號(hào)(^)表示,它有兩個(gè)操作符數(shù),只有一個(gè)1才得1,兩位都是1或都是0,則返回0。

左移

該操作符由兩個(gè)小于號(hào)(<<)表示,這個(gè)操作符會(huì)將數(shù)值的所有位(不包括符號(hào)位)向移動(dòng)指定的位數(shù),不足補(bǔ)0,左移不會(huì)影響符號(hào)位。

有符號(hào)右移

該操作符由兩個(gè)大于號(hào)(>>)表示,這個(gè)操作符會(huì)將數(shù)值的所有位(不包括符號(hào)位)向移動(dòng)指定的位數(shù),不足補(bǔ)0,但保留符號(hào)位。

無(wú)符號(hào)右移

該操作符由三個(gè)大于號(hào)(>>>)表示,這個(gè)操作符會(huì)將數(shù)值的所有位(32位,包括符號(hào)位)向移動(dòng)指定的位數(shù),不足補(bǔ)0。

布爾操作符 邏輯非(!號(hào)表示)返回一個(gè)布爾值,可以應(yīng)用于ECMAScript中的任何值

規(guī)則:

如果操作數(shù)是一個(gè)對(duì)象,返回false

如果操作數(shù)是一個(gè)空字符串,返回true

如果操作數(shù)是一個(gè)非空字符串,返回false

如果操作數(shù)是數(shù)值0,返回true

如果操作數(shù)是任意非0數(shù)值(包括Infinity),返回false

如果操作數(shù)是null,返回true

如果操作數(shù)是NaN,返回true

如果操作數(shù)是undefined,返回true

同時(shí)使用兩個(gè)邏輯非操作符,實(shí)際上就會(huì)模擬Boolean()轉(zhuǎn)換函數(shù)的行為,第一個(gè)邏輯非操作會(huì)基于無(wú)論什么操作數(shù)返回一個(gè)布爾值,而第二個(gè)邏輯非操作則對(duì)該布爾值求反,于是就得到了這個(gè)值真正對(duì)應(yīng)的布爾值,真正結(jié)果與對(duì)這個(gè)值使用Boolean()函數(shù)相同。

邏輯與(&&表示)

邏輯與操作可以應(yīng)用于任何類(lèi)型的操作數(shù),而不僅僅是布爾值,在有一個(gè)操作數(shù)不是布爾值的情況下,邏輯與操作就不一定返回布爾值

規(guī)則:

如果第一個(gè)操作數(shù)是對(duì)象,則返回第二個(gè)操作數(shù)。

如果第二個(gè)操作數(shù)是對(duì)象,則只有在第一個(gè)操作數(shù)的求值結(jié)果為true的情況下才會(huì)返回該對(duì)象。

如果兩個(gè)操作數(shù)都是對(duì)象,則返回第二個(gè)操作數(shù)

如果第一個(gè)操作數(shù)是null,則返回null

如果第一個(gè)操作數(shù)是NaN,則返回NaN

如果第一個(gè)操作數(shù)是undefined,則返回undefined

邏輯與操作屬于短路操作,即如果第一個(gè)操作數(shù)能夠決定結(jié)果,那么就不會(huì)再對(duì)第二個(gè)操作數(shù)求值。對(duì)于邏輯與操作而言,如果第一個(gè)操作數(shù)是false,則它不會(huì)執(zhí)行第二個(gè)操作數(shù)。

邏輯或(||表示)

和邏輯與相似,如果有一個(gè)操作數(shù)不是布爾值,邏輯或也不一定返回布爾值;
規(guī)則:

如果第一個(gè)操作數(shù)是對(duì)象,則返回第一個(gè)操作數(shù)

如果第一個(gè)操作數(shù)的求職結(jié)果為false,則返回第二個(gè)操作數(shù)

如果兩個(gè)操作數(shù)都是對(duì)象,則返回第一個(gè)操作數(shù)

如果兩個(gè)操作數(shù)都是null,則返回null

如果兩個(gè)操作數(shù)都是NaN,則返回NaN

如果兩個(gè)操作數(shù)都是undefined,則返回undefined

邏輯或也是短路操作符,如果第一個(gè)操作數(shù)的求值結(jié)果為true,就不會(huì)對(duì)第二個(gè)操作數(shù)求值了。利用邏輯或這一行為來(lái)避免為變量賦null或undefined值

乘性操作符

乘性操作符在操作數(shù)不是數(shù)值情況下會(huì)先使用Number()將其轉(zhuǎn)換為數(shù)值。

乘法(*)

規(guī)則:

兩個(gè)數(shù)都為數(shù)值,則執(zhí)行相應(yīng)的乘法運(yùn)算,若數(shù)值超出Infinity則返回Infinity或-Infinity

若有一個(gè)操作數(shù)為NaN,則結(jié)果為NaN

若Infinity與0相乘,則結(jié)果為NaN

若Infinity與非0相乘,則結(jié)果為Infinity,符號(hào)取決于有符號(hào)操作數(shù)的符號(hào)。

若Infinity與Infinity相乘,則結(jié)果是Infinity

若一個(gè)操作數(shù)不是數(shù)值,則在后臺(tái)調(diào)用Number()將其轉(zhuǎn)換為數(shù)值,再應(yīng)用上面規(guī)則

除法(/)

規(guī)則:

兩個(gè)數(shù)都是數(shù)值,則執(zhí)行相應(yīng)的除法運(yùn)算,若數(shù)值超出Infinity則返回Infinity或-Infinity

若有一個(gè)操作數(shù)是NaN,則結(jié)果是NaN

若Infinity被Infinity除,則結(jié)果是NaN

若0被0除,則結(jié)果是NaN

若非0有限數(shù)除以0,則結(jié)果是Infinity或-Infinity

若Infinity被任何非零數(shù)值除,結(jié)果是Infinity或-Infinity

若一個(gè)操作數(shù)不是數(shù)值,則在后臺(tái)調(diào)用Number()將其轉(zhuǎn)換為數(shù)值,再應(yīng)用上面規(guī)則

求模(%)

規(guī)則:

兩個(gè)數(shù)都是數(shù)值,則執(zhí)行相應(yīng)的余數(shù)運(yùn)算

如果被除數(shù)是無(wú)窮大值而除數(shù)是有限大的數(shù)值,則返回NaN

如果被除數(shù)是有限大的數(shù)值而除數(shù)是零,則結(jié)果是NaN

如果是Infinity被Infinity除,則結(jié)果是NaN

如果被除數(shù)是有限大的數(shù)值而除數(shù)是無(wú)窮大的數(shù)值,則結(jié)果是被除數(shù)

如果被除數(shù)是零,則結(jié)果是零

若一個(gè)操作數(shù)不是數(shù)值,則在后臺(tái)調(diào)用Number()將其轉(zhuǎn)換為數(shù)值,再應(yīng)用上面規(guī)則

加性操作符 加法

規(guī)則:

兩個(gè)數(shù)都是數(shù)值,執(zhí)行常規(guī)的加法運(yùn)算,根據(jù)下列數(shù)值返回結(jié)果

若一個(gè)操作數(shù)是NaN,則結(jié)果是NaN

若兩個(gè)操作數(shù)都是Infinity,則結(jié)果是Infinity

若兩個(gè)操作數(shù)都是-Infinity,則結(jié)果是-Infinity

若Infinity加-Infinity,則結(jié)果是NaN

(+0) + (+0) = (+0)

(-0) + (-0) = (-0)

(+0) + (-0) = (+0)

若有一個(gè)操作數(shù)是字符串,則根據(jù)下列規(guī)則

如果兩個(gè)操作數(shù)都是字符串,則將第二個(gè)操作數(shù)與第一個(gè)操作數(shù)拼接起來(lái)

如果只有一個(gè)操作數(shù)是字符串,則將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串,然后將兩個(gè)字符串拼接起來(lái)

若有一個(gè)操作數(shù)是對(duì)象、數(shù)值或布爾值,則調(diào)用他們的toString()方法取得相應(yīng)的字符串值,然后再應(yīng)用前面關(guān)于字符串的規(guī)則,對(duì)于undefined和null,則分別調(diào)用String()函數(shù)并取得字符串"undefined"和"null"

減法

規(guī)則:

若兩個(gè)數(shù)都是數(shù)值,執(zhí)行常規(guī)的減法運(yùn)算,并返回相應(yīng)的結(jié)果

若一個(gè)操作數(shù)是NaN,則結(jié)果是NaN

若Infinity減Infinity,則結(jié)果是NaN

若-Infinity減-Infinity,則結(jié)果是NaN

若Infinity減-Infinity,則結(jié)果是Infinity

若-Infinity減Infinity,則結(jié)果是-Infinity

(+0) - (+0) = (+0)

(-0) - (+0) = (-0)

(-0) - (-0) = (+0)

若有一個(gè)操作數(shù)是字符串,布爾值,null或undefined,則先在后臺(tái)調(diào)用Number()函數(shù)將其轉(zhuǎn)換為數(shù)值,然后再根據(jù)前面的規(guī)則執(zhí)行減法計(jì)算,若轉(zhuǎn)換結(jié)果是NaN,則結(jié)果是NaN

若有一個(gè)操作數(shù)是對(duì)象,則調(diào)用對(duì)象的valueOf()方法以取得表示該對(duì)象的數(shù)值,若得到的值是NaN,則減法結(jié)果就是NaN,若對(duì)象沒(méi)有valueOf()方法,則調(diào)用其toString()方法并將得到的字符串轉(zhuǎn)換為數(shù)值

關(guān)系操作符

指小于(<),大于(>),小于等于(<=)和大于等于(>=),皆返回布爾值
規(guī)則:

若兩個(gè)操作數(shù)都是數(shù)值,則執(zhí)行數(shù)值比較

若兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串對(duì)應(yīng)的字符編碼值

如果一個(gè)操作數(shù)是數(shù)值,則將另一個(gè)操作數(shù)轉(zhuǎn)換為一個(gè)數(shù)值,然后執(zhí)行數(shù)值比較

如果一個(gè)操作數(shù)是對(duì)象,則調(diào)用這個(gè)對(duì)象的valueOf()方法,用得到的結(jié)果按照前面的規(guī)則執(zhí)行比較,若對(duì)象沒(méi)有valueOf()方法,則調(diào)用toString()方法,并用得到的結(jié)果根據(jù)前面的規(guī)則執(zhí)行比較

若一個(gè)操作數(shù)是布爾值,則先將其轉(zhuǎn)換為數(shù)值,然后再執(zhí)行比較

任何操作數(shù)與NaN比較,結(jié)果都是false

相等操作符 相等(==)和不相等(!=)——先轉(zhuǎn)換再比較

規(guī)則:

若有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值,false轉(zhuǎn)換成0,true轉(zhuǎn)換成1。

若一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值。

如果一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)不是,則調(diào)用對(duì)象的valueOf()方法,用得到的基本類(lèi)型值按照前面的規(guī)則進(jìn)行比較

null和undefined是相等的。

要比較相等性之前,不能將null和undefined轉(zhuǎn)換成其他任何值。

如果有一個(gè)操作數(shù)是NaN,則相等操作符返回false,而不相等操作符返回true,即使兩個(gè)操作數(shù)都是NaN,相等操作符也返回false,因?yàn)镹aN和NaN不相等

如果兩個(gè)操作數(shù)都是對(duì)象,則比較它們是不是同一個(gè)對(duì)象,如果兩個(gè)操作數(shù)都指向同一對(duì)象,則相等操作符返回true,否則返回false。

全等(===)和不全等(!==)——僅比較不轉(zhuǎn)換

null==undefined會(huì)返回true,因?yàn)樗鼈兪穷?lèi)似的值,但null===undefined會(huì)返回false,因?yàn)樗鼈兪遣煌?lèi)型的值。

條件操作符
三元運(yùn)算符 variable = boolean_expression ? true_value : false_value
賦值操作符

乘/賦值(*=)

除/賦值(/=)

加/賦值(+=)

減/賦值(-=)

模/賦值(%=)

左移/賦值(<<=)

有符號(hào)右移/賦值(>>=)

無(wú)符號(hào)右移/賦值(>>>=)

所有的賦值操作符規(guī)則都一樣

let num = 10
num += 1 // 等價(jià)于 num = num + 1
逗號(hào)操作符

逗號(hào)操作符可以在一條語(yǔ)句中執(zhí)行多個(gè)操作

var num1 = 1, num2 = 2, num3 = 3; 

逗號(hào)操作符多用于聲明多個(gè)變量,除此之外,還可以用于賦值,在賦值時(shí),逗號(hào)操作符總會(huì)返回表達(dá)式的最后一項(xiàng)

let num = (5, 1, 4, 3, 0); // num的值為0
語(yǔ)句

各語(yǔ)言的語(yǔ)句都差不多,這里就不一一介紹了,這里只列舉

if語(yǔ)句

do-while語(yǔ)句

while語(yǔ)句

for語(yǔ)句

for-in語(yǔ)句,迭代語(yǔ)句,可用來(lái)枚舉對(duì)象的屬性; 如果表示要迭代的對(duì)象的變量值為null或undefined,for-in語(yǔ)句會(huì)拋出錯(cuò)誤,ES5雖然修正這一行為,他不會(huì)拋出錯(cuò)誤,只是不執(zhí)行循環(huán)體,但是在使用for-in循環(huán)之前,先檢測(cè)確認(rèn)該對(duì)象的值是不是null或undefined

label語(yǔ)句

break和continue語(yǔ)句,break和contiune的區(qū)別在于,break是退出當(dāng)前循環(huán)體; continue是退出當(dāng)前循環(huán),繼續(xù)執(zhí)行下一個(gè)循環(huán)

with語(yǔ)句,作用是把代碼作用域設(shè)置到一個(gè)特定的對(duì)象中,目的是為了簡(jiǎn)化多次編寫(xiě)同一個(gè)對(duì)象的工作。大量使用with語(yǔ)句會(huì)導(dǎo)致性能下降。

switch語(yǔ)句,switch中可以使用任何的數(shù)據(jù)類(lèi)型,無(wú)論是字符串還是對(duì)象,case的值可以是常量,變量和表達(dá)式。switch中使用的是全等操作符,不會(huì)發(fā)生類(lèi)型轉(zhuǎn)換

js里面的函數(shù)沒(méi)有簽名,函數(shù)重載也不可能實(shí)現(xiàn),即不能定義相同名字的函數(shù),通過(guò)參數(shù)個(gè)數(shù)的多少來(lái)調(diào)用相應(yīng)的函數(shù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/99809.html

相關(guān)文章

  • 一眼看穿

    摘要:沒(méi)錯(cuò),中的繼承正如你所理解的一樣,也是成對(duì)出現(xiàn)的。由于中的函數(shù)沒(méi)有簽名,因此無(wú)法實(shí)現(xiàn)接口繼承,只支持實(shí)現(xiàn)繼承,而繼承的主要方式,是通過(guò)原型鏈實(shí)現(xiàn)的,要理解原型鏈,首先要知道什么是原型,不懂的小伙伴,可以看這篇博文一眼看穿 繼承 我們知道JS是OO編程,自然少不了OO編程所擁有的特性,學(xué)習(xí)完原型之后,我們趁熱打鐵,來(lái)聊聊OO編程三大特性之一——繼承。 繼承這個(gè)詞應(yīng)該比較好理解,我們耳熟能...

    Amio 評(píng)論0 收藏0
  • 一眼看穿

    摘要:復(fù)制變量值基本類(lèi)型在復(fù)制變量值的時(shí)候,會(huì)在變量對(duì)象上創(chuàng)建一個(gè)新值,然后把該值復(fù)制到為新變量分配的位置上。 這篇文章將梳理下環(huán)境,作用域鏈,變量對(duì)象和活動(dòng)對(duì)象,以及內(nèi)存管理問(wèn)題。 基本類(lèi)型和引用類(lèi)型的值 我們都知道JS中的數(shù)據(jù)類(lèi)型有兩大類(lèi),基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型,下面從三個(gè)方面來(lái)解剖他們①保存方式基本類(lèi)型的值是指簡(jiǎn)單的數(shù)據(jù)段,引用類(lèi)型的值是指那些可能由多個(gè)值構(gòu)成的對(duì)象。 基本類(lèi)型...

    venmos 評(píng)論0 收藏0
  • 一眼看穿

    摘要:說(shuō)白了就是可以在構(gòu)造函數(shù)上調(diào)用屬性來(lái)指向原型,從而創(chuàng)建那個(gè)對(duì)象實(shí)例的原型對(duì)象使用原型有什么好處呢使用原型的好處是可以讓所有對(duì)象實(shí)例共享它所包含的屬性和方法。轉(zhuǎn)暈了麼是不是超級(jí)亂 原型 原型還是比較重要的,想單獨(dú)抽出一章來(lái)細(xì)說(shuō),說(shuō)到原型,那么什么是原型呢? 在構(gòu)造函數(shù)創(chuàng)建出來(lái)的時(shí)候,都有一個(gè)prototype(原型)屬性,這個(gè)屬性是一個(gè)指針,系統(tǒng)會(huì)默認(rèn)的創(chuàng)建并關(guān)聯(lián)一個(gè)對(duì)象,這個(gè)對(duì)象就是原...

    hqman 評(píng)論0 收藏0
  • 一眼看穿

    摘要:故事緣由一天,一哥們說(shuō),騷年,我發(fā)現(xiàn)擼碼一段時(shí)間后,回看以前自己寫(xiě)的代碼,水到掉渣了,我們來(lái)重構(gòu)吧我想,既然要重構(gòu),逼格肯定要比之前的高才行啦,等等 故事緣由 一天,一哥們說(shuō),騷年,我發(fā)現(xiàn)擼碼一段時(shí)間后,回看以前自己寫(xiě)的代碼,水到掉渣了,我們來(lái)重構(gòu)吧!我想,既然要重構(gòu),逼格肯定要比之前的高才行啦,等等

    baukh789 評(píng)論0 收藏0
  • 一眼看穿

    故事緣由 對(duì)象這個(gè)詞,在我們

    Loong_T 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<