五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > JavaScript 類型判斷測試

JavaScript 類型判斷測試

文章來源:365jz.com     點擊數(shù):289    更新時間:2009-09-12 15:01   參與評論

近期做項目對JavaScript的類型判斷用到了很多,由于有時候用typeof 有時候用 === 有時候用constructor,弄得自己有些頭大,于是做了下面最簡單的一個代碼測試。從測試結(jié)果我得出,要判斷嚴格判斷一個變量的類型應該用 === + typeof,=== + typeof 可以準確判斷出5種類型,分別是:number, string, boolean, undefined, function 這個組合無法分辨object和array ,如果要嚴格區(qū)分Array 和Object就只有用 constructor + === 來判斷了,一個undefined的變量是不能取constructor的,會報錯!

這里要注意一下,用typeof 返回的是一個字符串,而且都是小寫,所以用typeof的時候得這樣寫,如判斷變量是否為string :if(typeof xx === "string") , 而 constructor返回的是一個對象 ,所以用constructor的時候得這樣寫,如判斷變量xx是否為 Array if(xx && xx.constructor === Array) 前面的if (xx && 是首先判斷 xx, 保證xx不為 undefined 且 不為null)


Ok 現(xiàn)在上代碼

<script>
var a = 1, b = "1", c = true;
var d, e = [], f= {},g = null;
var w = function(s) {document.write(s+ "<br />");};
//首先聲明了一些變量和一個函數(shù)用于下面的測試
/**********測試開始**********/
w(
"typeof a: " + typeof a);
w(
"typeof b: " + typeof b);
w(
"typeof c: " + typeof c);
w(
"typeof d: " + typeof d);
w(
"typeof e: " + typeof e);
w(
"typeof f: " + typeof f);
w(
"typeof w: " + typeof w);
w(
"<br>a.constructor: " + a.constructor);
w(
"b.constructor: "+ b.constructor);
w(
"c.constructor: " + c.constructor);
w(
"d.constructor: 會報錯");
w(
"e.constructor: " + e.constructor);
w(
"f.constructor: "+ f.constructor);
w(
"w.constructor: "+ w.constructor);
w(
"g.constructor: 會報錯");

if(e && e.constructor === Array) w("<br />(e && e.constructor === Array) works");
if(e && e.constructor == Array) w("(e && e.constructor == Array) works");

if(w && w.constructor === Function) w("(w && w.constructor === Function) works" );
if(w && w.constructor == Function) w("(w && w.constructor == Function) works" );

if(d==undefined) w("<br />(d==undefined) works");
if(d==null)w("(d==null) works");
if(d===undefined) w("(d===undefined) works");
if(null == undefined) w("(null == undefined) works")
if(null === undefined) w("(null === undefined) works"); else w("(null === undefined) does not work")
if(a==b) w("(1==\"1\") works")
if(a===b) w("(1===\"1\") works"); else w("(1===\"1\") does not work");
</script>
我這邊用測試結(jié)果如下:

測試結(jié)果:
typeof a: number
typeof b: string
typeof c: boolean
typeof d: undefined
typeof e: object
typeof f: object
typeof w: function

a.constructor: function Number() { [native code] } 
b.constructor: function String() { [native code] } 
c.constructor: function Boolean() { [native code] } 
d.constructor: 會報錯
e.constructor: function Array() { [native code] } 
f.constructor: function Object() { [native code] } 
w.constructor: function Function() { [native code] } 
g.constructor: 會報錯

(e && e.constructor === Array) works
(e && e.constructor == Array) works
(w && w.constructor === Function) works
(w && w.constructor == Function) works

(d==undefined) works
(d==null) works
(d===undefined) works
(null == undefined) works
(null === undefined) does not work
(1=="1") works
(1==="1") does not work
PS : 會報錯是我加上去的,測試過一定會報錯的,所以用中文字代替了

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答!! 點擊進入論壇

發(fā)表評論 (289人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號