(1)基本資料型別
string、 number、null、undefined、 boolean、bigint、symbol注意⚠️:
number型別中nan不是有效數字但是屬於number型別,
typeof
nan//=> 'number'
nan===
nan// => false
object.is(
nan,
nan)
// => true
bigint出現的意思是保證超出最大最小安全值仍然可以準確計算
console.
log(number.
max_safe_integer);
//=>9007199254740991
console.
log(number.
min_safe_integer);
//=>-9007199254740991
9007199254740991n =>bigint型別的
(2)引用資料型別
(1)轉化為number型別的情況
使用isnan進行檢測的時候,會隱式轉換為數字在檢測,轉換過程中,遇到物件會先tostring然後在number轉換
驗證是不是無效數字,無效返回true例子:
isnan(123) 、 isnan(』』) 、isnan(『2222』) 、 isnan(false)、isnan(true) 、isnan(null) 、 isnan()
結果為 false
結果為true
結果為false
isnan(undefined)、、 isnan(nan) 、
使用parseint、parsefloat轉換
先轉成字串,然後從左到右檢測有效數字,如果沒有檢測到有效數字結果就為 nan例子:
parseint(『112abc』) 結果為 112
parseint(『abc』)、parseint(『abc22222』) 結果為 nan
parsefloat(『2.22』+『aa』) 結果為 2.22
parsefloat(『2e』+『3』) 結果為 2000 科學計數法例外
在==比較的時候,有些值需要轉換為數字再進行比較
一道parseint面試題
let arr =
[10.18,0
,14,35
,23] arr = arr.
map(parseint)
console.
log(arr)
// 解體思路
// 可以轉化為arr.map((el,idx)=>parseint(el,idx))
//返回乙個陣列
// 元素分別求
// parseint(10.18,0) => 10
// parseint(0,1) => nan parseint的進製範圍是2~36, 1 不在該範圍返回nan
// parseint(14,2) => 從左向右檢測進製2,數字範圍0~1,所以4沒有,相當於1的2進製轉化為10進製,1*2^0 = 1, 結果為1
// parseint(35,3) => 因為3進製數字範圍0~2, 3和5都不在這個範圍,返回nan
// parseint(23,4) => 2*4^1+3*4^0 = 11
// 結果為[10,nan,1,nan,11]
(2)轉化為string型別的情況
(3)轉化為boolean
(4)「==」的隱式轉化
parseint(""
);// 輸出nan
parseint
(null);
// 輸出nan
parseint
("12px"
)// 輸出12
parsefloat
("1.6px")+
parseint
("1.2px")+
typeof
parseint
(null
)// 輸出'2.6nan' 1.6 + 1 + typeof nan
number(""
)// 輸出0
number
(null
)// 輸出0
number
("12px"
)// 輸出nan
number(!
!number
(parseint
("0.8"))
)// 輸出0 0.8 => 0 => 0 => false => 0
isnan(""
)// 輸出false "" => 0 =>false
isnan
(null
)// 輸出false null => 0 => false
isnan
("12px"
)// 輸出true
isnan
(number(!
!number
(parseint
("0.8"))
))// 輸出false isnan(0)
typeof
!parseint
(null)+
!isnan
(null
)let a =
typeof
typeof
typeof[12
,23];
// 'string'
// 輸出'booleantrue'
// typeof !(nan) + !(isnan(number(null)))
// typeof true + !(isnan(0)) => 'boolean'+ true => 'booleantrue'
let result =12+
false
+undefined+
+'test'
+null
+true+;
console.
log(result)
;// 12 + false => 12 + 0 => 12
// 12 + undefined => 12 + nan => nan
// nan + => nan + number() => nan + number(.tostring()) => nan + number('') => nan
// nan+'test' => 'nantest'
// 'nantest'+null => 'nantestnull'
// 'nantestnull'+true => 'nantestnulltrue'
// 'nantestnulltrue'+ {} => 'nantestnulltrue'+ {}.tostring() => 'nantestnulltrue[object object]'
let res =
parsefloat
('left:200px'
)//=> nan
if(res===
200)
else
if(res ===
nan)
elseif(
typeof res ===
'number'
)else
習題 js資料型別與隱式型別轉換
執行環境是js中最為重要的乙個概念。執行環境定義了變數或函式有權訪問的其他資料,決定了它們各自的行為。每個執行環境都有乙個與之關聯的變數物件 variable object 環境中定義的所有變數和函式都儲存在這個物件中。雖然我們寫的 無法訪問這個物件,但解析器在處理資料時會在後台使用它。全域性執行環...
資料型別的隱式轉換
下班很無聊 2017 05 26 20 23 一 函式類 isnan 該函式會對引數進行隱式的number 轉換,如果轉換不成功,則會返回true var a 1a alert isnan a true alert 輸出的內容隱式的轉換為string型別 二 運算子類 a.算數運算子 如果運算元不是...
js隱式型別轉換
筆試題 var x 1 if function console.log x 1undefined解析 if function f function f 作為表示式,function f消失,所以在if裡面,f為未宣告 任何乙個變數,未經宣告使用都會報錯。但是,typeof其時,不會報錯,而是unde...