筆記 JS高階程式設計 基本概念篇

2022-03-25 12:04:53 字數 3402 閱讀 8942

1:js中的一切(變數,函式名和操作符)都是區分大小寫的

2:識別符號(變數,函式,屬性的名字,以及函式的引數),第乙個字元必須是字母,下劃線,或者美元$,書寫方式採用駝峰式,不能將關鍵字作為識別符號。

3:js的變數是鬆散型別,每個變數僅僅是乙個用於儲存值的佔位符,未初始化的變數都會儲存乙個特殊值--undefined。

4:js的五種基本資料型別(undefined,null,boolean,number,string),複雜資料型別--object(本質是一組無序的鍵值對組成)。從技術上講,函式在js當中屬於物件,但是他不應該是一種資料型別。所以通過typeof操作符(不是函式)來區分很有必要。

注釋:2018-7-30 10:18:50 begin

4.1:js的五種基本資料型別都屬於原始值,原始值是不可更改的:任何方法都無法更改(或「突變」)乙個原始值。

4.2:基本型別的值是存放在棧當中(棧(stack)為自動分配的記憶體空間,它由系統自動釋放;而堆(heap)則是動態分配的記憶體,大小不定也不會自動釋放),存放在棧記憶體中的簡單資料段,資料大小確定,是直接按值存放的

var str = "abc";

console.log(str[1]="f"); //

fconsole.log(str); //

abclet name = "pan";

name = "panrui"; //

實際上並不是修改字串"pan"的值,而是建立了乙個新的字串,然後將新的字串賦值給變數,在銷毀原來的字串

4.3:最佳的方式也是採用typeof來檢測原始值的型別

4.3.1:typeof運算子的獨特之處在於,將其用於乙個未宣告的變數也不會報錯。未定義的變數和值為undefined的變數通過typeof都將返回"undefined",所以顯式地初始化變數很有必要。undefined型別只有乙個特殊值--undefined,比如說宣告了但是沒有初始化的變數。

4.3.2:null型別只有乙個值--null,null表示乙個空指標物件,如果定義的變數將來準備儲存物件,那麼初始化為null,這樣直接檢查null就可以知道相應的變數是否已經儲存了乙個物件的引用。undefined是派生與null,所以undefined == null 為true。杜絕使用typeof來檢測null型別的值

4.4:引用型別(object)的值是存放在堆記憶體中的,但是變數還是存放在棧當中,不過變數在棧當中所對應的值是乙個位址,存放引用型別的值的位址。

end7:boolean只有true和false兩個值。js所有型別的值都有與這兩個boolean值等價的值,將乙個值轉換為對應的boolean採用boolean()函式就可以。轉換為false的其他值為(空字串「」,0和nan,null,undefined)

8:number

1浮點數值:number型別來表示整數和浮點數值。八進位製字面值(在嚴格模式中無效)的第一位必須為0(070解析為八進位制的56),如果字面值中的數值超過範圍,那麼前導零會被忽略(079解析為79),浮點數的精度為17位小數,所以(0.1+0.2 不等於0.3)永遠不要測試某個特定的浮點數值,科學計數法(3.125e7=3125000),(0.0000003 =3e-7)。

2數值範圍:超過範圍的值會被自動轉為infinity(也分正負),infinity是不能參與計算的,要想確定乙個數值是否超出範圍採用isfinite()函式(返回true或者false)。

3nan:非數值也是乙個特殊的數值。這個數值表示乙個要返回數值的運算元未返回數值的情況(這樣就不會報錯了,比如任何值除以0都會報錯)。nan有兩個非常特點,任何涉及nan的操作都會返回nan,nan與任何值都不會相等(包括他自己)。isnan()檢測某個值是否可以轉換為數值,不能轉換的話就返回true,也就表示這個引數"不是數值"。

4數值轉換:把非數值轉換為數值:number(),parseint(),parsefloat()。

number適用於任何資料型別,後面兩個則專門將字串轉換成數值。number的轉換規則太複雜了(自己去看書),

parseint主要是看字串是否符合數值模式,忽略空格直接找到第乙個非空格字元,如果第乙個字串不是數字字元或者負號,那麼就直接返回nan,如果是數字字元或者負號,就繼續解析直到遇到了乙個非數字字元(小數點不是數字字元),識別各種整數格式。使用的時候最好指定基數(即多少進製)。

parsefloat解析的字串中的第乙個小數點是有效的,第二個區別在於他會始終忽略前導的零,並且只解析十進位制數,但十六進製制格式的字串則始終會被轉換為0

9:string

1字串的特點:字串一旦建立,它們的值就不能再改變,要改變某個變數儲存的字串,首先要銷毀原來的字串,然後再用乙個新的字串重新填充該變數。

2轉換為字串:第一種是使用幾乎每個值都有的tostring(),這個方法唯一要做的就是返回相應值的字串表現。但是null和undefined沒有這個方法。在不知道要轉換的值是不是null和undefined的情況下,可以使用轉型函式string(),規則就是如果值有tostring方法,則呼叫該方法,如果值是null就返回"null",undefined同理。要把某個值轉換為字串的快捷方式,使用加號操作符,把它與乙個空字串加在一起。

11操作符

1遞增與遞減操作符(分為前置操作符與後置操作符),這四個操作符對任何值都適用,只不過會先轉換成數字值在進行操作,number()

12函式

1位於return語句之後的任何**都永遠不會執行,return語句可以不帶有任何返回值,會返回乙個undefined。

2理解引數:js函式的引數在內部是用乙個類陣列arguments物件來接收的,使用length屬性來確定傳遞進來的引數的個數,關於arguments物件的特點就是,他的值永遠與對應命名引數的值保持同步(但是他們的記憶體空間是相互獨立的),另外注意的一點是arguments物件的長度是由傳入的引數個數決定,而不是定義函式時命名引數的個數決定。

3關於引數最後一點,沒有傳遞值的命名引數都將自動被賦予undefined,且js所有引數都是按值傳遞,不可能通過引用傳遞引數。

13語句

1if語句的condition會自動結果轉換為布林值

2do-while屬於一種後測試迴圈語句,在對條件表示式求值之前,迴圈體內的**至少會被執行一次

3while前迴圈語句,for也是前迴圈語句,for迴圈只是把與迴圈有關的**集中到了乙個位置

4for-in是一種精準的迭代語句,用來列舉物件的屬性,for-in迴圈輸出的屬性名的順序是不可測的,另外注意一點就是,迴圈之前最好判斷要迭代的物件的變數值不為null或undefined

5break語句會立即退出迴圈,contiune語句雖然也會立即退出迴圈,但退出迴圈以後會從迴圈的頂部繼續執行

6switch語句中可以使用任何資料型別,其次case的值也不一定是常量,可以是變數,甚至是表示式。switch在比較值的時候採用的全等操作符

JS基本概念

1.一切 變數 函式名 操作符 都區分大小寫 2.識別符號 第乙個字元必須為字母 下劃線或者美元符號,其他字元可以是字母 下劃線 美元符號或者數字 3.資料型別 1 undefined 用var宣告的變數未初始化時的值 2 null 乙個空物件指標 3 boolean 只有兩個字面值 true fa...

程式設計基本概念

程式設計基本概念 一 賦值語句 1.c c code int i 1 void main 在c 中,這樣的賦值操作時合法的,int i i,i變數從宣告的那一刻起就是可見的,main 裡的i不是1,因為它與mian 外的i無關,而是乙個未定義的值。2.include using namespace ...

js事件基本概念

1.事件模型 2.事件流 概念 事件流指的是事件從捕獲 處於目標 事件冒泡三個階段 3.dom的三個階段?dom0 事件的新增用onclick新增。dom2 事件的新增用addevenlistener type.function buhuo 並且可以新增多個事件,this 當前的物件。ie瀏覽器是通...