重溫《js權威指南》 第2 3章

2022-07-15 09:12:12 字數 3231 閱讀 1638

第二章 語法結構

2.1 js區分大小寫,html不區分大小寫

2.5 注意分號,如果沒有分號,直譯器會試**析js,並在不能解析的地方加分號

第三章 值和變數

js資料型別分兩類:原始型別(數字,字串,布林值)和物件型別。

兩個特殊的原始值:undefined,null

3.1 數字

js不區分整型和浮點型別,所有數字都是浮點數值

infinity 最大值  -infinity 最小值

1/0=infinity ,-1/0=-infinity ,0/0=nan

js中的非數字值與任何值都不相等,所以 x==nan無法判斷x是否為nan,用x!=x

math物件,包含常用數字操作

date物件,包含日期操作

3.2 文字

字串的長度是其所含16位值的個數

字串的常用方法:charat(),substring(),indexof(),touppercase()

regex物件 模式匹配

3.4 null和undefined

null是乙個特殊的物件,typeof(null)==object,含義是「無值」

undefined 表明變數未定義,沒有初始化。

沒有返回值的函式返回undefined

null==undefined ,都表示「值的空缺」

3.5 全域性物件

當js直譯器啟動時(任何web瀏覽器載入新頁面時),它將建立乙個新的全域性物件,並給它一組初始屬性:

全域性屬性,比如:undefined,infinity,nan

全域性函式,比如:isnan(),parseint(),eval()

建構函式,比如:date(),regex(),string(),object(),array()

全域性物件,比如:math,json

可以通過別名「global」來找到這些全域性物件

3.6 包裝物件

var s="asd";

s.len=4;

alert(s.len);//undefined,因為s相當於乙個臨時物件,s.len執行完之後就釋放了

var ss=new string("asd");

ss.len=4;

alert(ss.len);//4   ,因為ss是乙個物件

3.7 不可變的原始值和可變的物件引用

js的原始值(undefined,null,布林,數字,字串)和物件有本質的區別,原始值不可變,注意字串。

原始值的比較是值的比較,物件的比較是引用的比較

3.8 型別轉換

值字串

數字布林

物件 undefined

null

"undefined"

"null"

nan

0false

false

throw typeerror

throw typeerror

true

false

"true"

"false"

1

0new boolean(true)

new boolean(false)

""

"1.2"

"one"

0

1.2

nanfalse

true

true

new string("")

new string("1.2")

new string("one")

0

-0

nan

infinity

-infinity

1"0"

"-0"

"nan"

"infinity"

"-infinity"

"1"false

false

false

true

true

true

new number(0)

new number(-0)

new number(nan)

new number(infinity)

new number(-infinity)

new number(1)

{}(任意物件)

(任意陣列)

[9](乙個數字元素)

['a'](其他陣列)

function(){}

""

"9"

使用join方法

0

9

nan

nantrue

true

true

true

true

3.8.3 物件轉換為原始值

1.預設的tostring()方法

2.特定版本的tostring()。如,函式類返回這個函式的實現,日期類返回日期和時間,regexp類返回正規表示式直接量

3.10 變數作用域

1.函式作用域替代塊級作用域

2.變數提前宣告

var scope="全域性"

function a()

a();

3.使用var宣告乙個全域性變數時,這個屬性是不可配置的無法delete.而用乙個未宣告的變數賦值的話,js會自動建立乙個全域性物件的可配置的屬性

4.作用域鏈

重溫《js權威指南》 第7,8章

第七章 陣列 陣列是值的有序集合。js陣列是無型別的,陣列元素可以是任意型別,同乙個陣列中不同元素也可能有不同的型別。陣列可以動態增長或縮減,建立時無須生命那個乙個固定的大小並且陣列大小變化時也無須重新分配空間。js陣列可能是稀疏的 陣列的索引不一定連續。針對稀疏陣列,陣列的length屬性可能不管...

筆記 《js權威指南》 第6章 物件

1.屬性的特性 可寫性,可遍歷,可刪除修改屬性。2.物件的特性 1 物件的原型prototype,本物件的屬性繼承自它的原型物件。2 物件的類class,是乙個標識物件型別的字串。3 ecmscript 5中 物件的擴充套件標記指明了是否可以給該物件新增新屬性。3.物件的型別 1 內建物件 由ecm...

《逆向工程權威指南》 第2章2 3節MIPS

2.3 mips 在mips指令裡,暫存器有兩種命名方式。一種是以數字命名 0 31 另一種則是以偽名稱 pseudoname 命名 v0 va0,依此類推 在gcc編譯器生成的彙編指令中,暫存器都採用數字方式命名。指令清單2.4 optimizing gcc 4.4.5 彙編輸出 j 31 li ...