国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

keithyau / 3480人閱讀

摘要:高程讀書筆記第三章語法中的一切變量函數名和操作符都區分大小寫。建議無論在任何情況下都指定基數函數與函數類似。返回對象的字符串數值或布爾值表示。

JS高程讀書筆記--第三章 語法

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

不能把關鍵字、保留字、true、false和null用做標識符。

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

ECMAScript中的語句以一個分號結尾;如果省略分號,則由解析器確定語句的結尾。

關鍵字可以用于表示控制語句的開始或結束,或者用于執行特定的操作等。

保留字某種意義上是為了將來的關鍵字而保留的單詞。

ECMAScript的變量是松散類型的,可以用來保存任何類型的數據,每個變量僅僅是一個用于保存值得占位符而已。

數據類型

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

typeof操作符

typeof是一個操作符而不是函數。對一個值使用typeof操作符可能返回下列某個字符串:

"undefined"--如果這個值未定義;

"boolean"--如果這個值是布爾值;

"string"--如果這個值是字符串;

"number"--如果這個值是數值;

"object"--如果這個值是對象或null;

"function"--如果這個值是函數;

調用typeof null會返回"object",因為特殊值null被認為是一個空的對象的引用

可以通過typeof操作符來區分函數和其他對象

Undefined類型

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

注:typeof操作符返回"undefined"值時,可以檢測變量是否被聲明,而不是是否初始化。因為對未聲明的變量執行typeof操作符也返回"undefined"

Null類型

Null類型是第二個只有一個值的數據類型,這個特殊的值是null。從邏輯角度來看,null值表示一個空對象指針。

如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為null而不是其他值

null == undefined // 返回true

Boolean類型

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

JS中所有類型的值都有與這兩個Boolean值等價的值,可以調用轉換函數Boolean ( )。

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

Number類型使用IEEE754格式來表示整數和浮點數值。

1.浮點數值

所謂浮點數值,就是該數值中必須包含一個小數點,并且小數點后必須至少有一位數字

保存浮點數值需要的內存空間是保存整數值的兩倍,因此ECMAScript會不時地將浮點數值轉換為整數值。

對于極大極小的數值,可以用e表示法(科學計數法)表示的浮點數值表示。用e表示法表示的數值等于e前面的數值乘以10的指數次冪。

浮點數值的最高精度是17位小數。

2.數值范圍

如果某次計算的結果得到了一個超出JS數值范圍的值,那么這個數值將被自動轉換成特殊的Infinity值

想要確定一個數值是否是無窮的,可以使用isFinite() 函數

3.NaN

NaN,即非數值是一個特殊的數值,這個數值用于表示一個本來要返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤)。

任何涉及NaN的操作都會返回NaN

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

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

4.數值轉換

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

Number()轉換規則如下

如果是Boolean值,true和false將分別被轉換為1和0。

如果是數字值,只是簡單的傳入和傳出。

如果是null值,返回0。

如果是undefined,返回NaN。

如果是字符串,遵循以下規則:

如果字符串中只包含數字,則將其轉換為十進制數值;

如果字符串中包含有效的浮點格式,則將其轉換為對應的浮點數值;

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

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

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

如果是對象,則調用對象的valueOf()的方法,然后依照前面的規則轉換返回的值。

parseInt()函數

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

parseInt()轉換空字符串會返回NaN,而Number()對空字符串返回0。

這個函數的第二個參數是轉換時使用的基數。(建議無論在任何情況下都指定基數)

parseFloat()函數

parseInt()函數類似。區別為:

字符串中第一個小數點是有效的,后面的小數點都是無效的

parseFloat()只解析十進制值,因此它沒有用第二個參數指定基數的方法。它始終會忽略前面的0。

String類型

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

字符字面量

字符字面量可以出現在字符串中的任意位置,而且也將被作為一個字符來解析。

任何字符串的長度都可以通過訪問其length屬性取得。

字符串的特點

ECMAScript中的字符串是不可變的,也就是說,字符串一旦創建,它們的值就不能改變。要改變某個變量保存的字符串,首先要銷毀原來的字符串。

轉換為字符串

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

轉型函數String()

如果值有toString()方法,則調用該方法(沒有參數)并返回相應的結果;

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

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

Object類型

對象可以通過new操作符創建:var o = new Object();
Object的每個實例都具有下列屬性和方法:

constructor:保存著用于創建當前對象的函數。

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

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

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

toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。

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

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

操作符 一元操作符

只能操作一個值的操作符叫做一元操作符

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

在對非數值應用一元加操作符時,該操作符會像Number()轉型函數一樣對這個值執行轉換

布爾操作符

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

同時使用兩個邏輯非操作符,實際上就會模擬Boolean()轉型函數的行為

乘性操作符

如果參與乘性計算的某個操作數不是數值,后臺會先使用Number()轉型函數將其轉換為數值。

加性操作符

對于加法操作符(+)來說:

如果兩個操作數都是字符串,則將第二個操作數與第一個操作數拼接起來;

如果只有一個操作數是字符串,則將另一個操作數轉換為字符串,然后再將兩個字符串拼接起來

如果有一個操作數是對象、數值、或布爾值,則調用他們的toString()方法取得相應的字符串的值,再應用前面關于字符串的規則;

對于undefined和null,則分別調用String()函數并取得字符串"undefined"和"null";

每個加法操作都是獨立執行的

對于減法操作符(-)來說:

如果有一個操作數是字符串、布爾值、null或undefined,則現在后臺調用Number()函數將其轉換為數值,然后再根據前面的規則執行減法計算。如果轉換的結果是NaN,則減法的結果就是NaN;

如果有一個操作數是對象,則調用對象的valueOf()方法以取得表示該對象的數值。如果得到的值是NaN,則減法的結果就是NaN。如果對象沒有valueOf()方法,則調用其toString()方法并將得到的字符串轉換為數值;

關系操作符

當關系操作符使用了非數值時:

如果兩個操作數都是字符串,則比較兩個字符串中對應位置的每個字符的字符編碼值;

如果一個操作數是數值,則將另一個操作數轉換為一個數值,然后執行數值比較;

如果一個操作數是對象,則調用這個對象的valueOf()方法,用得到的結果按照前面的規則進行比較。如果對象沒有valueOf()方法,則調用toString()方法,并用得到的結果根據前面的規則執行比較;

如果一個操作數是布爾值,則先將其轉換為數值,然后再執行比較;

任何操作數與NaN進行關系比較,結果都是false

相等操作符

相等和不相等:先轉換再比較;全等和不全等:僅比較而不轉換

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

在轉換不同的數據類型時,遵循以下規則:

如果有一個操作數是布爾值,則在比較相等性之前先將其轉換為數值:false轉換為0,而true轉換為1;

如果有一個操作數是字符串,另一個操作數是數值,在比較相等性之前先將字符串轉換為數值;

如果一個操作數是對象,另一個操作數不是,則調用對象的valueOf()方法,用得到的基本類型值按照前面的規則進行比較

這倆操作符在進行比較時要遵循:

null == undefined;

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

如果有一個操作數是NaN,則相等操作符返回false,不相等操作符返回true。即使兩個操作數都是NaN,相等操作符也返回false;因為按照規則,NaN不等于NaN;

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

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

它只在兩個操作數未經轉換就相等的情況下返回true;

null === undefined // false

語句 if語句

解析器會自動調用Boolean()轉換函數將條件表達式的結果轉化為一個布爾值;

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

循環語句

do-while語句是一種后測試循環語句,即只有在循環體中的代碼執行之后,才會測試出口條件。在對條件表達式求值之前,循環體內的代碼至少會被執行一次。

while語句屬于前測試循環語句,也就是說,在循環體內的代碼被執行之前,就會對出口條件求值。因此循環體內代碼有可能永遠不會被執行。

使用while循環做不到的,使用for循環同樣也做不到。可以說for循環只是把與循環有關的代碼集中在了一個位置

for-in語句是一種精準的迭代語句,可以用來枚舉對象的屬性

break和continue

break語句會立即退出循環,強制繼續執行循環后面的語句;

continue語句雖然也是立即退出循環,但退出循環后會從循環的頂部繼續執行;

with

with語句的作用是將代碼的作用域設置到一個特定的對象中;

定義with語句的目的主要是為了簡化多次編寫同一個對象的工作;

嚴格模式下不允許使用with語句;

switch語句

省略break關鍵字,會導致執行完當前case后,繼續執行下一個case;

default關鍵字用于在表達式不匹配前面任何一種情形的時候,執行代碼(相當于else);

switch語句在比較值時使用的是全等操作符,因此不會發生類型轉換;

函數

任何函數在任何時候都可以通過return語句后跟要返回的值來實現返回值

位于return語句之后的任何代碼都永遠不會執行

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

arguments對象是一個類數組對象,可以通過方括號語法訪問它的每一個元素,也可以使用length屬性來確定傳遞進來多少個參數。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86401.html

相關文章

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

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

    EasonTyler 評論0 收藏0
  • 高程讀書筆記 第六章 面向對象程序設計

    摘要:創建一個新對象將構造函數的作用域賦給新對象因此就指向了這個新對象執行構造函數中的代碼為這個新對象添加屬性返回新對象。 本章內容 理解對象屬性 理解并創建對象 理解繼承 ECMA-262把對象定義為:無序屬性的集合,其屬性可以包含基本值、對象或者函數 理解對象 創建對象 創建自定義對象的最簡單方式就是創建一個Object的實例,再為它添加屬性和方法。 var person = new...

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

    摘要:高程讀書筆記第五章類型創建實例的方式有兩種。第一種是使用操作符后跟構造函數,另一種方式是使用對象字面量表示法。 JS高程讀書筆記--第五章 Object類型 創建Object實例的方式有兩種。第一種是使用new操作符后跟Object構造函數,另一種方式是使用對象字面量表示法。 在通過對象字面量定義對象時,實際上不會調用Object構造函數 訪問對象屬性時可以使用點表示法和方括號表示法。...

    anRui 評論0 收藏0
  • 004-讀書筆記-JavaScript高級程序設計 基本概念(下)

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

    nevermind 評論0 收藏0
  • javascript高程3 學習筆記(二)

    摘要:的理解函數與其他語言函數最大的不同在于,其不介意傳入多少參數以及參數的類型比如函數的形參有兩個,但是調用函數傳入的參數可以寫一個,三個或不寫參數對應等,解析器都可以正常解析,這是因為中參數在內部是以一個數組形式來表示,故而不需要關系傳入參數 ECMAScript function的理解 ECMAScript 函數與其他語言函數最大的不同在于,其不介意傳入多少參數以及參數的類型...

    JerryWangSAP 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<