在 js 中,存在著 6 種原始值,分別是:
首先原始型別儲存的都是值,是沒有函式可以呼叫的。但注意有的基本型別會在呼叫函式時被強制轉換!例如:『1』.tostring()。
原始型別中存在的一些坑:
js 的number
型別是浮點型別的,在使用中會遇到某些 bug,比如 0.1 + 0.2 !== 0.3 ,因為所有的小數都只是乙個近似值。
string
型別是不可變的,無論你在string
型別上呼叫何種方法,都不會對值有改變。
對於null
來說,很多人會認為他是個物件型別,其實這是錯誤的。雖然typeof null
會輸出object
。那是因為在 js 的最初版本中使用的是 32 位系統,為了效能考慮使用低位儲存變數的型別資訊,000
開頭代表是物件,然而null
表示為全零,所以將它錯誤的判斷為object
。
物件型別和原始型別不同的是,原始型別儲存的是值,物件型別儲存的是位址(指標)。當我們將變數賦值給另外乙個變數時,複製的是原本變數的位址(指標),若修改其中乙個,則另乙個也是相同的變化。
若函式引數是物件的話:
typeof
對於原始型別來說,除了null
都可以顯示正確的型別。typeof
對於物件來說,除了函式都會顯示object
,所以說typeof
並不能準確判斷變數到底是什麼型別。
typeof null //「object」
typeof console.log // 『function』
想判斷乙個物件的正確型別,這時候可以考慮使用instanceof
,因為內部機制是通過原型鏈來判斷的。但instanceof
也不是百分之百可信的,特別是當存在多個frame或多個window之間的互動時,instanceof所給出的結果有可能是錯誤的。
JS的資料型別
number型別 js不去分別整數和浮點數。字串型別 以單引號或雙引號括起來的任意文字。es6標準新增了多行字串 字串.這個字元是數字1左邊英文狀態下的字元,叫反單引號。字串之間用加號連線,而不是php的點連線。es6也新增了一種模版字串 字串是不可變的,所謂字串的改變就是新建了乙個新的字串,然後把...
js的資料型別
資料型別 js中有六種資料型別,包括五種基本資料型別 number,string,boolean,null,undefined 和一種混合資料型別 object undefined只有乙個值,即undefined值。使用var宣告了變數,但未給變數初始化值,那麼這個變數的值就是undefined n...
JS的資料型別
js有六種資料型別,包括五種基本資料型別 number,string,boolean,undefined,null 和一種複雜資料型別 object 1.number型別 number型別包含整數和浮點數 浮點數數值必須包含乙個小數點,且小數點後面至少有一位數字 兩種值。nan 非數字型別。特點 涉...