咖啡伴侣

呆在上海
posts - 163, comments - 156, trackbacks - 0, articles - 2

JS instanceof 判断类型 问题

Posted on 2009-06-29 18:11 oathleo 阅读(5544) 评论(3)  编辑  收藏 所属分类: Web
判断变量类型:一般情况下,可以先用typeof 运算符,如果结果是"object",再用instanceof来判断;
 特别的地方是:
    instanceof不认为原始类型值的变量是对象,

   1var temp="a string for test";   
   
2//下面这句返回"string"   
   3. alert( typeof temp);   
   
4//下面这句返回"false"   
   5. alert(temp instanceof String);   
   
6.   
   
7//看看Ext内部实现,判断String类型 
   8. if(  typeof temp== "string"){
   9. }

其他附加问题:
  • null:表示尚未存在的对象,注意,尽管尚未存在,也是个对象啊,所以用typeof检测一个null值变量的结果是Object;不过,为了便于写if语句,在js中,"undefined==false", "null=false", 因此,"undefined==null"。
  • 整数:最容易犯的错误就是,忘了070其实是个八进制数,相当于十进制的56;
  • 浮点数:“在进行运算之前,真正存储的是字符串”——这应该是解释执行的本质决定的吧——直接后果是,alert(0.8)这样的语句可以正确输出,而alert(2*0.8)的输出就成了"2.40000000000000003"
  • 数字边界: 数字有几个边界值,分别是Number.MAX_VALUE(最大值), Number.MIN_VALUE(最小值), Number.POSITIVE_INFINITY(正无穷), Number.NEGATIVE_INFINITY(负无穷), Infinity(无穷大,-Infinity,这个有点莫名其妙,不知道为啥又搞出一套);特别地,还有一个isFinit(iNumber)函数来判 断数字是否为无穷大。
  • NaN:一些需要数字作为参数的函数,当传入的实参无法转换为数字时,往往会返回这个值;关于NaN,最重要的就是要记住NaN!=NaN,因此判断一个变量是否为NaN,一定要使用isNaN(var)函数。
  • 将字符串转换为数字:sVar.parseInt() 是最常用的函数,也最容易出错,为了保险起见,最好每次调用的时候,都加上“进制”的参数,比如:a.parseInt(10),就制定了按十进制转换字 符串a;Number(sVar)也是一种转换方式,不同的是,它要求整个字符串都得是有效数字,因此Number("4.5.5")将返回NaN;

Feedback

# re: JS instanceof 判断类型 问题[未登录]  回复  更多评论   

2010-09-28 17:00 by polaris
博主,此处不对:而alert(2*0.8)的输出就成了"2.40000000000000003" 。不知道你写的时候有没有测试,或者是你的JavaScript版本导致的?我测试是正常的,输出为1.6

# re: JS instanceof 判断类型 问题[未登录]  回复  更多评论   

2011-07-22 17:39 by peter
同上,firebug下调试的.

# re: JS instanceof 判断类型 问题  回复  更多评论   

2012-07-27 11:35 by 瞬间的永恒
那里应该是 alert(3*0.8) ,我这边的结果是2.4000000000000004

只有注册用户登录后才能发表评论。


网站导航: