1. 程式人生 > >JavaScript基礎入門教程(一)

JavaScript基礎入門教程(一)

構造 圖片 def type 屬於 string 意思 原則 原始類型

js的數據類型

  雖然js屬於弱類型語言,但其總共有6種數據類型。弱類型的意思是定義的變量沒有類型的區分,比如先執行 var num=123; 定義了一變量num存儲整數,可接下來執行 num="hello world"; 將字符串賦值給num變量並不會報錯,是合法的。

  js的弱類型相對於強類型的語言來說看起來好像很好用,其實也不盡然,下面列舉了一些字符串和整數進行操作時候的一些因為js的弱類型帶來的問題。

32 + 32 // 結果是 64
"32" + 32 // 結果是 "3232"
"32" - 32 // 結果是 0

/*
值得一提的是基於上面的一些問題,這裏出現了兩個類型轉換技巧
字符串轉整數:num - 0;
整數轉字符串:num + ‘‘;
*/

js中的六種數據類型

  原始類型:①number;②string;③boolean;④null;⑤undefined

  對象類型:①object(Function,Array,Date等都是object類型)

js的隱式轉換

  因為js是弱類型,所以存在大量的隱式轉換,其中下面的結果都是true

"1.23" == 1.23 //嘗試將字符串轉換為數字再比較
0 == false //將boolean值轉換為數字再比較,其中false轉為0,true轉為1,
      //所以1==true返回true,但是2==true返回false
null == undefined new Object() == new
Object() [1,2] == [1,2]
//如果是object==string|number會嘗試將對象轉換為基本類型 比如:new String(‘hi‘) == ‘hi‘ 會
//返回true,其它情況會返回false。

  這樣一來就有人會問,那怎麽保證 1.23 等於1.23 而不等於 "1.23" 呢?這個就引出了js中的一個新的運算符 === 嚴格等於運算符,這個運算符會先判斷等號兩邊的類型是否相同,不同就直接返回false。如果類型相同且滿足一下原則會返回true:

  ①數值滿足值相等

  ②字符串滿足長度和字符均相等

  ③null === null

  ④undefined === undefined

  此外還有兩個東西NaN和object,其中NaN和任何東西比較都是false,包括它自己,即NaN===NaN也返回false,而object是引用比較,只有是同一個對象才返回true。

js包裝類型

技術分享圖片

  如上圖所示,雖然前面講過string(不是String)屬於基本類型,但是其依然有屬性length,這看起來似乎有對象的影子,這其實是js的包裝起的作用,每次在使用string、number等類型的變量時,js會自動對這些變量進行包裝,創建出一個臨時對象出來,圖上所示在執行str.length時js偷偷執行new String(str).length了。

js類型檢測

1、使用typeof檢測類型

typeof 100    //返回 "number"
typeof true    //返回 "boolean"
typeof function    //返回 "function"
typeof (undefined)    //返回 "undefined"
typeof new Object()    //返回 "object"
typeof [1,2]    //返回 "object"
typeof NaN    //返回 "number"
typeof null    //返回 "object"

2、使用instanceof判斷對象類型(格式:對象 instanceof 函數構造器)

[1,2] instanceof Array //返回true
new Object() instanceof Array //返回false

3、使用Object.prototype.toString

Object.prototype.toString.apply([]);    //返回 "[object Array]"
Object.prototype.toString.apply(function(){});    //返回 "[object Function]"
Object.prototype.toString.apply(null);    //返回 "[object Null]"
Object.prototype.toString.apply(undefined);    //返回 "[object Undefined]"

JavaScript基礎入門教程(一)