成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS高程讀書筆記--第三章基本概念

keithyau / 3482人閱讀

摘要:高程讀書筆記第三章語(yǔ)法中的一切變量函數(shù)名和操作符都區(qū)分大小寫。建議無(wú)論在任何情況下都指定基數(shù)函數(shù)與函數(shù)類似。返回對(duì)象的字符串?dāng)?shù)值或布爾值表示。

JS高程讀書筆記--第三章 語(yǔ)法

ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫。

不能把關(guān)鍵字、保留字、true、false和null用做標(biāo)識(shí)符。

嚴(yán)格模式是為JavaScript定義了一種不同的解析與執(zhí)行模型。在嚴(yán)格模式下,ECMAScript3中的一些不確定的行為將得到處理,而且對(duì)某些不安全的操作也會(huì)拋出錯(cuò)誤。("use strict";)。

ECMAScript中的語(yǔ)句以一個(gè)分號(hào)結(jié)尾;如果省略分號(hào),則由解析器確定語(yǔ)句的結(jié)尾。

關(guān)鍵字可以用于表示控制語(yǔ)句的開(kāi)始或結(jié)束,或者用于執(zhí)行特定的操作等。

保留字某種意義上是為了將來(lái)的關(guān)鍵字而保留的單詞。

ECMAScript的變量是松散類型的,可以用來(lái)保存任何類型的數(shù)據(jù),每個(gè)變量?jī)H僅是一個(gè)用于保存值得占位符而已。

數(shù)據(jù)類型

ECMAScript中有5種簡(jiǎn)單數(shù)據(jù)類型(基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number和String,還有一種復(fù)雜數(shù)據(jù)類型:Object。

typeof操作符

typeof是一個(gè)操作符而不是函數(shù)。對(duì)一個(gè)值使用typeof操作符可能返回下列某個(gè)字符串:

"undefined"--如果這個(gè)值未定義;

"boolean"--如果這個(gè)值是布爾值;

"string"--如果這個(gè)值是字符串;

"number"--如果這個(gè)值是數(shù)值;

"object"--如果這個(gè)值是對(duì)象或null;

"function"--如果這個(gè)值是函數(shù);

調(diào)用typeof null會(huì)返回"object",因?yàn)樘厥庵祅ull被認(rèn)為是一個(gè)空的對(duì)象的引用

可以通過(guò)typeof操作符來(lái)區(qū)分函數(shù)和其他對(duì)象

Undefined類型

Undefined類型只有一個(gè)值,即特殊的undefined。在使用var聲明變量但未對(duì)其加以初始化時(shí),這個(gè)變量就是undefined。

注:typeof操作符返回"undefined"值時(shí),可以檢測(cè)變量是否被聲明,而不是是否初始化。因?yàn)閷?duì)未聲明的變量執(zhí)行typeof操作符也返回"undefined"

Null類型

Null類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是null。從邏輯角度來(lái)看,null值表示一個(gè)空對(duì)象指針。

如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象,那么最好將該變量初始化為null而不是其他值

null == undefined // 返回true

Boolean類型

Boolean類型只有兩個(gè)字面值:true和false(小寫)。

JS中所有類型的值都有與這兩個(gè)Boolean值等價(jià)的值,可以調(diào)用轉(zhuǎn)換函數(shù)Boolean ( )。

數(shù)據(jù)類型 轉(zhuǎn)換為true的值 轉(zhuǎn)換為false的值
String 任何非空字符串 ""(空字符串)
Number 任何非零數(shù)字值(包括無(wú)窮大) 0和NaN
Object 任何對(duì)象 null
Undefined (不適用) undefined
Number類型

Number類型使用IEEE754格式來(lái)表示整數(shù)和浮點(diǎn)數(shù)值。

1.浮點(diǎn)數(shù)值

所謂浮點(diǎn)數(shù)值,就是該數(shù)值中必須包含一個(gè)小數(shù)點(diǎn),并且小數(shù)點(diǎn)后必須至少有一位數(shù)字

保存浮點(diǎn)數(shù)值需要的內(nèi)存空間是保存整數(shù)值的兩倍,因此ECMAScript會(huì)不時(shí)地將浮點(diǎn)數(shù)值轉(zhuǎn)換為整數(shù)值。

對(duì)于極大極小的數(shù)值,可以用e表示法(科學(xué)計(jì)數(shù)法)表示的浮點(diǎn)數(shù)值表示。用e表示法表示的數(shù)值等于e前面的數(shù)值乘以10的指數(shù)次冪。

浮點(diǎn)數(shù)值的最高精度是17位小數(shù)。

2.數(shù)值范圍

如果某次計(jì)算的結(jié)果得到了一個(gè)超出JS數(shù)值范圍的值,那么這個(gè)數(shù)值將被自動(dòng)轉(zhuǎn)換成特殊的Infinity值

想要確定一個(gè)數(shù)值是否是無(wú)窮的,可以使用isFinite() 函數(shù)

3.NaN

NaN,即非數(shù)值是一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤)。

任何涉及NaN的操作都會(huì)返回NaN

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

isNaN()函數(shù)可以確定參數(shù)是否“不是數(shù)值”

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

有三個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()parseInt()parseFloat()。轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型,而另外兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。

Number()轉(zhuǎn)換規(guī)則如下

如果是Boolean值,true和false將分別被轉(zhuǎn)換為1和0。

如果是數(shù)字值,只是簡(jiǎn)單的傳入和傳出。

如果是null值,返回0。

如果是undefined,返回NaN。

如果是字符串,遵循以下規(guī)則:

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

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

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

如果字符串是空的(不包含任何字符),則將其轉(zhuǎn)換為0;

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

如果是對(duì)象,則調(diào)用對(duì)象的valueOf()的方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。

parseInt()函數(shù)

Number()函數(shù)在轉(zhuǎn)換字符串的時(shí)候比較復(fù)雜且不夠合理,因此處理整數(shù)的時(shí)候更常用parseInt()。
parseInt()函數(shù)在轉(zhuǎn)換字符串時(shí),更多的是看其是否符合數(shù)值模式。它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空格字符。如果第一個(gè)字符不是數(shù)字或者符號(hào),parseInt()就會(huì)返回NaN。如果第一個(gè)字符是數(shù)字字符,parseInt()會(huì)繼續(xù)解析,知道解析完所有或者遇到了非數(shù)字字符。

parseInt()轉(zhuǎn)換空字符串會(huì)返回NaN,而Number()對(duì)空字符串返回0。

這個(gè)函數(shù)的第二個(gè)參數(shù)是轉(zhuǎn)換時(shí)使用的基數(shù)。(建議無(wú)論在任何情況下都指定基數(shù))

parseFloat()函數(shù)

parseInt()函數(shù)類似。區(qū)別為:

字符串中第一個(gè)小數(shù)點(diǎn)是有效的,后面的小數(shù)點(diǎn)都是無(wú)效的

parseFloat()只解析十進(jìn)制值,因此它沒(méi)有用第二個(gè)參數(shù)指定基數(shù)的方法。它始終會(huì)忽略前面的0。

String類型

String類型用于表示由零或多個(gè)16位Unicode字符組成的字符序列,即字符串。用雙引號(hào)表示的字符串和用單引號(hào)表示的字符串完全相同。

字符字面量

字符字面量可以出現(xiàn)在字符串中的任意位置,而且也將被作為一個(gè)字符來(lái)解析。

任何字符串的長(zhǎng)度都可以通過(guò)訪問(wèn)其length屬性取得。

字符串的特點(diǎn)

ECMAScript中的字符串是不可變的,也就是說(shuō),字符串一旦創(chuàng)建,它們的值就不能改變。要改變某個(gè)變量保存的字符串,首先要銷毀原來(lái)的字符串。

轉(zhuǎn)換為字符串

數(shù)值、布爾值、對(duì)象和字符串值(返回字符串的一個(gè)副本)都有toString()方法。但null和undefined沒(méi)有這個(gè)方法,可以傳遞一個(gè)參數(shù):輸出數(shù)值的基數(shù)。

轉(zhuǎn)型函數(shù)String()

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

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

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

Object類型

對(duì)象可以通過(guò)new操作符創(chuàng)建:var o = new Object();。
Object的每個(gè)實(shí)例都具有下列屬性和方法:

constructor:保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)。

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

isPrototypeOf(object):用于檢查傳入的對(duì)象是否是傳入對(duì)象的原型。

propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用for-in語(yǔ)句來(lái)枚舉

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

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

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

操作符 一元操作符

只能操作一個(gè)值的操作符叫做一元操作符

執(zhí)行前置遞增和遞減操作時(shí),變量的值都是在語(yǔ)句被求值以前改變的(副效應(yīng))。

在對(duì)非數(shù)值應(yīng)用一元加操作符時(shí),該操作符會(huì)像Number()轉(zhuǎn)型函數(shù)一樣對(duì)這個(gè)值執(zhí)行轉(zhuǎn)換

布爾操作符

布爾操作符共有三個(gè):非(!)、與(&&)、或(||)。

同時(shí)使用兩個(gè)邏輯非操作符,實(shí)際上就會(huì)模擬Boolean()轉(zhuǎn)型函數(shù)的行為

乘性操作符

如果參與乘性計(jì)算的某個(gè)操作數(shù)不是數(shù)值,后臺(tái)會(huì)先使用Number()轉(zhuǎn)型函數(shù)將其轉(zhuǎn)換為數(shù)值。

加性操作符

對(duì)于加法操作符(+)來(lái)說(shuō):

如果兩個(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";

每個(gè)加法操作都是獨(dú)立執(zhí)行的

對(duì)于減法操作符(-)來(lái)說(shuō):

如果有一個(gè)操作數(shù)是字符串、布爾值、null或undefined,則現(xiàn)在后臺(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)系操作符

當(dāng)關(guān)系操作符使用了非數(shù)值時(shí):

如果兩個(gè)操作數(shù)都是字符串,則比較兩個(gè)字符串中對(duì)應(yīng)位置的每個(gè)字符的字符編碼值;

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

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

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

任何操作數(shù)與NaN進(jìn)行關(guān)系比較,結(jié)果都是false

相等操作符

相等和不相等:先轉(zhuǎn)換再比較;全等和不全等:僅比較而不轉(zhuǎn)換

相等和不相等(==、!=)

在轉(zhuǎn)換不同的數(shù)據(jù)類型時(shí),遵循以下規(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()方法,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較

這倆操作符在進(jìn)行比較時(shí)要遵循:

null == undefined;

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

如果有一個(gè)操作數(shù)是NaN,則相等操作符返回false,不相等操作符返回true。即使兩個(gè)操作數(shù)都是NaN,相等操作符也返回false;因?yàn)榘凑找?guī)則,NaN不等于NaN;

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

全等和不全等(===、!==)

它只在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就相等的情況下返回true;

null === undefined // false

語(yǔ)句 if語(yǔ)句

解析器會(huì)自動(dòng)調(diào)用Boolean()轉(zhuǎn)換函數(shù)將條件表達(dá)式的結(jié)果轉(zhuǎn)化為一個(gè)布爾值;

條件操作符:variable = boolean_expression ? true_value : false_value;

循環(huán)語(yǔ)句

do-while語(yǔ)句是一種后測(cè)試循環(huán)語(yǔ)句,即只有在循環(huán)體中的代碼執(zhí)行之后,才會(huì)測(cè)試出口條件。在對(duì)條件表達(dá)式求值之前,循環(huán)體內(nèi)的代碼至少會(huì)被執(zhí)行一次。

while語(yǔ)句屬于前測(cè)試循環(huán)語(yǔ)句,也就是說(shuō),在循環(huán)體內(nèi)的代碼被執(zhí)行之前,就會(huì)對(duì)出口條件求值。因此循環(huán)體內(nèi)代碼有可能永遠(yuǎn)不會(huì)被執(zhí)行。

使用while循環(huán)做不到的,使用for循環(huán)同樣也做不到??梢哉f(shuō)for循環(huán)只是把與循環(huán)有關(guān)的代碼集中在了一個(gè)位置

for-in語(yǔ)句是一種精準(zhǔn)的迭代語(yǔ)句,可以用來(lái)枚舉對(duì)象的屬性

break和continue

break語(yǔ)句會(huì)立即退出循環(huán),強(qiáng)制繼續(xù)執(zhí)行循環(huán)后面的語(yǔ)句;

continue語(yǔ)句雖然也是立即退出循環(huán),但退出循環(huán)后會(huì)從循環(huán)的頂部繼續(xù)執(zhí)行;

with

with語(yǔ)句的作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中;

定義with語(yǔ)句的目的主要是為了簡(jiǎn)化多次編寫同一個(gè)對(duì)象的工作;

嚴(yán)格模式下不允許使用with語(yǔ)句;

switch語(yǔ)句

省略break關(guān)鍵字,會(huì)導(dǎo)致執(zhí)行完當(dāng)前case后,繼續(xù)執(zhí)行下一個(gè)case;

default關(guān)鍵字用于在表達(dá)式不匹配前面任何一種情形的時(shí)候,執(zhí)行代碼(相當(dāng)于else);

switch語(yǔ)句在比較值時(shí)使用的是全等操作符,因此不會(huì)發(fā)生類型轉(zhuǎn)換;

函數(shù)

任何函數(shù)在任何時(shí)候都可以通過(guò)return語(yǔ)句后跟要返回的值來(lái)實(shí)現(xiàn)返回值

位于return語(yǔ)句之后的任何代碼都永遠(yuǎn)不會(huì)執(zhí)行

return語(yǔ)句后也可以不帶有任何返回值。在這種情況下,函數(shù)在停止執(zhí)行后將返回undefined值。這種做法一般用在需要提前停止函數(shù)執(zhí)行而又不需要返回值的情況。

arguments對(duì)象是一個(gè)類數(shù)組對(duì)象,可以通過(guò)方括號(hào)語(yǔ)法訪問(wèn)它的每一個(gè)元素,也可以使用length屬性來(lái)確定傳遞進(jìn)來(lái)多少個(gè)參數(shù)。

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

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

相關(guān)文章

  • JS高程讀書筆記--第六章原型繼承

    摘要:高程讀書筆記第六章理解對(duì)象創(chuàng)建自定義對(duì)象的方式有創(chuàng)建一個(gè)實(shí)例,然后為它添加屬性和方法。創(chuàng)建了自定義的構(gòu)造函數(shù)之后,其原型對(duì)象默認(rèn)只會(huì)取得屬性至于其他方法都是從繼承而來(lái)的。 JS高程讀書筆記--第六章 理解對(duì)象 創(chuàng)建自定義對(duì)象的方式有創(chuàng)建一個(gè)Object實(shí)例,然后為它添加屬性和方法。還可用創(chuàng)建對(duì)象字面量的方式 屬性類型 ECMAScript在定義只有內(nèi)部采用的特性時(shí),描述了屬性的各種特征...

    EasonTyler 評(píng)論0 收藏0
  • 高程讀書筆記 第六章 面向?qū)ο蟪绦蛟O(shè)計(jì)

    摘要:創(chuàng)建一個(gè)新對(duì)象將構(gòu)造函數(shù)的作用域賦給新對(duì)象因此就指向了這個(gè)新對(duì)象執(zhí)行構(gòu)造函數(shù)中的代碼為這個(gè)新對(duì)象添加屬性返回新對(duì)象。 本章內(nèi)容 理解對(duì)象屬性 理解并創(chuàng)建對(duì)象 理解繼承 ECMA-262把對(duì)象定義為:無(wú)序?qū)傩缘募希鋵傩钥梢园局?、?duì)象或者函數(shù) 理解對(duì)象 創(chuàng)建對(duì)象 創(chuàng)建自定義對(duì)象的最簡(jiǎn)單方式就是創(chuàng)建一個(gè)Object的實(shí)例,再為它添加屬性和方法。 var person = new...

    468122151 評(píng)論0 收藏0
  • JS高程讀書筆記--第五章引用類型

    摘要:高程讀書筆記第五章類型創(chuàng)建實(shí)例的方式有兩種。第一種是使用操作符后跟構(gòu)造函數(shù),另一種方式是使用對(duì)象字面量表示法。 JS高程讀書筆記--第五章 Object類型 創(chuàng)建Object實(shí)例的方式有兩種。第一種是使用new操作符后跟Object構(gòu)造函數(shù),另一種方式是使用對(duì)象字面量表示法。 在通過(guò)對(duì)象字面量定義對(duì)象時(shí),實(shí)際上不會(huì)調(diào)用Object構(gòu)造函數(shù) 訪問(wèn)對(duì)象屬性時(shí)可以使用點(diǎn)表示法和方括號(hào)表示法。...

    anRui 評(píng)論0 收藏0
  • 004-讀書筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(下)

    摘要:操作符,會(huì)將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時(shí),也說(shuō)明了,使用兩個(gè)邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個(gè) ++ 和 --。一元操作符使用的時(shí)候,可以前置也可以后置。由于兩個(gè)操作方式類似,先只說(shuō)明 ...

    nevermind 評(píng)論0 收藏0
  • javascript高程3 學(xué)習(xí)筆記(二)

    摘要:的理解函數(shù)與其他語(yǔ)言函數(shù)最大的不同在于,其不介意傳入多少參數(shù)以及參數(shù)的類型比如函數(shù)的形參有兩個(gè),但是調(diào)用函數(shù)傳入的參數(shù)可以寫一個(gè),三個(gè)或不寫參數(shù)對(duì)應(yīng)等,解析器都可以正常解析,這是因?yàn)橹袇?shù)在內(nèi)部是以一個(gè)數(shù)組形式來(lái)表示,故而不需要關(guān)系傳入?yún)?shù) ECMAScript function的理解 ECMAScript 函數(shù)與其他語(yǔ)言函數(shù)最大的不同在于,其不介意傳入多少參數(shù)以及參數(shù)的類型...

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

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

0條評(píng)論

閱讀需要支付1元查看
<