第三章 型別、值和變數
1、js的資料型別分為兩類:原始型別(基本資料型別/不可變型別)和物件型別(引用資料型別/可變型別)。
js中的原始型別包括數字/字串/布林值,還有兩個特殊的:null和undefined。
物件是屬性的集合。陣列/函式是特殊的物件。
如果函式用來初始化(使用new運算子)乙個新建的物件,我們稱之為建構函式。每個建構函式定義了一類物件——由建構函式初始化的物件組成的集合。類可以看作是物件型別的子型別。有陣列類/函式類/正則類/日期類/錯誤類。
2、從技術上講,只有js物件才能擁有方法。然而,數字/字串/布林值也可以擁有自己的方法(基本包裝型別?)。在js中,只有null和undefined無法擁有方法。
3、nan不和任何值相等。判斷變數是不是nan的辦法:x!=x(僅當x為nan時為true)或者isnan()函式(為nan或非數字值時為true)。正零和負零除了作為除數時有差別(正無窮和負無窮),其他時候基本一樣。
4、ieee二進位制浮點數有時會帶來小的誤差,所以在用作比較操作中時要注意。
5、布林值可以使用tostring()方法。
6、
undefined的可以認為是表示系統級的、出乎意料的或類似錯誤的值的空缺,而null是表示程式級的、正常的或者在意料之中的值的空缺。如果想將它們賦值給變數或屬性,或將它們作為引數傳入函式,最佳選擇是使用null。7、js物件是一種復合值:它是屬性或已命名值的集合。通過.符號可以引用屬性值,當屬性值是乙個函式的時候,稱其為方法。
8、只要引用了字串s的屬性,js就會將字串值通過呼叫new string(s)的方式轉換為物件,這個物件繼承了字串的方法,並被用來處理屬性的引用。一旦屬性引用結束,這個新建立的物件就會銷毀。數字和布林值同理。訪問字串/數字/布林值的屬性時建立的臨時物件稱作包裝物件。
9、通過string()/number()/boolean()建構函式可以顯式建立包裝物件,和原始值相等但不全等。
10、物件和陣列的比較並非值的比較,即使包含同樣的屬性和相同的值,它們也不相等。物件的值都是引用,物件的比較均是引用的比較:當且僅當它們引用同乙個基物件時,它們才相等。
11、宣告提前:js函式裡宣告的所有變數(但不涉及賦值)都被提前至函式體的頂部。
12、通過var宣告的變數是不可配置的。
js 權威指南學習筆記3
第四章 表示式和運算子 1 最簡單的表示式是原始表示式,是表示式的最小單位 它們不再包含其他表示式。js中原始表示式包含常量或直接量 關鍵字和變數。2 乙個物件的屬性名不是固定值時,必須使用方括號寫法來訪問屬性。3 任何乙個呼叫表示式都包含一對圓括號和左圓括號之前的表示式,如果這個表示式是乙個屬性訪...
js 權威指南學習筆記4
第五章 語句 1 在js中沒有塊級作用域,在語句塊中宣告的變數並不是語句塊私有的。2 儘管函式宣告語句和函式定義表示式具有相同的函式名,但二者仍然不同。兩種方式都建立了新的函式物件,但函式宣告語句中的函式名是乙個變數名,變數指向函式物件,和通過var宣告變數一樣,函式定義語句中的函式被顯式地提前到了...
js 權威指南學習筆記7
第七章 陣列 1 陣列直接量的語法允許有可選的結尾的逗號,所以 只有兩個元素而非三個。2 呼叫建構函式array 建立陣列時,傳入乙個引數時表示指定陣列的長度。3 所有的索引都是屬性名,但只有在0 2 32 2之間的整數屬性名才是索引。所有的陣列都是物件,可以為其建立任意名字的屬性。但如果使用的屬性...