JS中的資料型別 web前端高階學習

2021-10-05 08:30:14 字數 4188 閱讀 6347

- typeof 檢測資料型別的邏輯運算子

- instanceof 檢測是否為某個類的例項

- constructor 檢測建構函式

- object.prototype.tostring.call 檢測資料型別的

字串「number」、字串「boolean」、字串「undefined」、字串"string"、字串"「symbol」、字串"「function」、字串「object」、字串「bigint」

- 返回的結果都是字串

- 侷限性:

+ typeof (null)=> 「object」

+ typeof 不能細分物件型別(檢測普通物件或者陣列物件等都是"object")

習題:

let a =

typeof

typeof

typeof[12

,23];

console.

log(a)

;//=>"string"   

/* * typeof [12, 23] =>"object"

* typeof "object" =>"string"

* ...

*/

1、 nan!=nan 它和誰都不相等,包括和自己本身也不相等

2、isnan(值) 檢測這個值是否為有效數字,如果不是有效數字返回true,是有效數字返回false

3、 parseint 處理的值是字串,從字串的左側開始查詢有效數字字元(遇到非有效數字字元則停止查詢), 如果處理的值不是字串,需要先轉換為字串然後在開始查詢介面

4、number (值) 直接呼叫瀏覽器最底層的資料型別檢測機制來完成

+ true 1 false 0 *****==== number (true)=>1、number (false )=>0

+ null 0 undefined nan********** number (null)=>0、number (nan)=>nan

+ 字串中必須保證都是有效數字才會轉換為數字,否則都是nan,

number (「字串」)=>nan

+number("")=>0 小技巧:遇到number(值)值是非字串的想象放到if(值)

5、0 nan null undefined 轉為布林型別是假 一般借用感嘆號!轉成布林型別

let res =

parsefloat

('left:200px');

//=>nan

if(res ===

200)

else

if(res ===

nan)

elseif(

typeof res ===

'number'

)else

parseint(""

)//nan

number(""

)//0

isnan(""

)//先把""轉換為數字(隱式 number) isnan(0) false

parseint

(null

)//parseint('null') nan

number

(null

)//0

isnan

(null

)// isnan(0) false

parseint

("12px"

)//12

number

("12px"

)//nan

isnan

("12px"

)//isnan(nan) true

parsefloat

("1.6px")+

parseint

("1.2px")+

typeof

parseint

(null);

+ 1 + typeof nan => 2.6 + 'number' -> '2.6number'

isnan

(number(!

!number

(parseint

("0.8"))

));// isnan(0) false

typeof

!parseint

(null)+

!isnan

(null);

// 'booleantrue'

==true先轉換成數字,再比較。比較兩邊利用number轉換機制

number() 、number(』』) 0

let result =10+

false

+ undefined +

+'tencent'

+null

+true+;

console.

log(result)

;// 10 + 0 10

// 10 + undefined nan

// nan + 'nan'

// 'nan' + 'tencent' 'nantencent'

// 'nantencentnulltrue[object object]'

+號運算子

nan+[

]//"nan" nan+[1,3]===>"nan1,3"

nan+

//"nan[object object]"+10

//10 {}在前會被當成**塊執行, 10+{}===>"10[object object]"

在兩邊出現字串(或者物件)的情況下,加號一定是字串拼接 =>物件本身是要轉換為數字進行運算的,只不過轉換數字的過程中,需要先轉換為字串,才能轉換為數字,而一旦轉換為字串,不好意思就變為字串拼接了

物件轉換為字串 先呼叫 valueof 獲取原始值(一般都是基本型別值),則繼續呼叫 tostring()

number([

10])//"10"

number[

100,

200]

//"10,20"

== 在進行比較的時候,如果左右兩邊資料型別不一致,則需要先預設轉換為一致的資料型別,然後在進行比較

=== 絕對相等,兩邊型別一致,值也一致才相等,型別不一樣,直接不對等,不會轉換

物件==字串 物件轉換為字串

[10] == 『10』 true

null == undefined (三個等號下不相等),但是和其它任何的值都不相等

0 == null false

nan和誰(包括自己)都不相等

剩下的情況都是轉換為數字在做比較的

==

false

//true 都轉換為數字

先轉換為''

(tostring)

在轉換為數字0

(number)

false 變為數字0

!

==false

//true

運算子優先順序 !

再算比較![

] 轉換為布林值進行取反(把其它型別轉換為布林型別遵循的規律: 只有 0

/nan

/null

/undefined/

'' 五個值是false,其餘的都是true) =>

false

false

==false

true

+10

//1010+

//'10[object object]'(+

0)//'[object object]0'()

+0//'[object object]0'+0

+//'[object object]0[object object]'+0

大括號在js中太特殊了:物件、**塊(塊作用域)

此處把大括號當做乙個**塊 後面是+

0+值 這個操作是數**算(不論加誰)

++值 值++ 都是數**算

總結:

大括號在運算子前面

在沒有使用小括號處理優先順序的情況下 不認為是數**算,加小括號才算

出現在運算子的後面 認為是數**算

js高階 資料型別

基本 值 型別 string 任意字串 number 任意數字 boolean true false null null undefined undefined 物件 引用 型別 object 任意的物件 一般物件內部資料無序 function 一種特別的物件 可以執行 array 一種特別的物件 ...

web前端筆記 5 js變數和資料型別

1.由大寫或小寫字母 數字 下劃線 美元符號 組成 2.不能以數字開頭 3.嚴格區分大小寫,比如it和it不是同乙個變數 4.不能使用js中的關鍵字和保留字class 5.要盡量做到見其名,知其意,名字起的有意義一點,用小駝峰命名法 var a 布林只能有兩個值 true 或 false var x...

JS中的資料型別

js中的資料型別分為兩種 基本資料型別和引用資料型別 基本資料型別 number boolean string undefined null symbol es6中新增 引用資料型別 object array function date regexp 等 講區別之前,需要先了解堆 heap 和棧 s...