最近在準備面試的事情,正好在通過視頻學習,將視頻中的一些知識點整理一下,寫出來做個備忘錄(雖然我自己還手動寫了一份紙質筆記),(/ω\)
知識點一、變量類型和計算
變量類型
值類型 和 引用類型
值類型:特點是每個變量都會存儲各自的值,不會相互影響。
var a =100;
var b = a;
a = 200;
console.log(b); // 100
這里用的是Number
類型,字符串類型和布爾類型也一樣。
引用類型:特點是不同變量指針指向同一個對象,可以無限地擴展屬性,比如這里是age
,還可以加name
,加sex
等等(引用類型包括數組、對象、函數)
引用類型
區別:
值變量與引用變量的區別
在值變量中,變量a
、b
各自分開占不同的內存,互不影響。
引用變量中,變量a
、b
都指向同一個對象,改變b
變量的值,會使得b
變量指向的對象改變,因此a變量也同時發生變化。
為什么在引用變量中,var b = a
; 不是將對象copy
一份給b
呢?因為引用類型是可以無限擴展屬性的,如果a
自己一份, 再copy
給b
一份,當屬性很多的時候,那么這個內存占用就很大了,而引用類型是為了讓類型共同空間,指向同一個,這樣內存只占用一處。
typeof 運算符
typeof運算符
一共六種類型,但是typeof
只能區分值類型的詳細類型,無法區分引用類型的詳細類型,但可以區分出函數。
因為數組就沒認出來啊。
變量計算-強制類型轉換
1.字符串拼接
字符串拼接
2.==運算符
==運算符
第一個是將100轉換成字符串
'100'
進行比較;第二個是把數字0轉換成
false
,空字符也轉換成false
,兩者比較相等,所以結果為true
;第三個是將
null
和undefined
都轉換成false
,再比較相同,所以結果為true
。
3.if語句
if語句
這里面后兩種情況都發生了強制類型轉換。
b=100
轉換成了true
,執行了d重新賦值的操作,所以d為30
;
c=''
轉換成了false
,無法進入if
語句,所以不執行里面的操作,d還是之前的30
。
4.邏輯運算符
邏輯運算符