开发者社区> zhanginzaghi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JS编程建议——4:注意JavaScript数据类型的特殊性(2)

简介: 4:注意JavaScript数据类型的特殊性(2)
+关注继续查看

建议4:注意JavaScript数据类型的特殊性(2)
3.正确检测数据类型
使用typeof运算符返回一个用于识别其运算数类型的字符串。对于任何变量来说,使用typeof运算符总是以字符串的形式返回以下6种类型之一:
"number"
"string"
"boolean"
"object"
"function"
"undefined"
不幸的是,在使用typeof检测null值时,返回的是“object”,而不是“null”。更好的检测null的方式其实很简单。下面定义一个检测值类型的一般方法:

  1. function type(o){
  2. return (o === null) ? "null" : (typeof o);
  3. }
    这样就可以避开因为null值影响基本数据的类型检测。注意:typeof不能够检测复杂的数据类型,以及各种特殊用途的对象,如正则表达式对象、日期对象、数学对象等。

对于对象或数组,可以使用constructor属性,该属性值引用的是原来构造该对象的函数。如果结合typeof运算符和constructor属性,基本能够完成数据类型的检测。表1.2所示列举了不同类型数据的检测结果。
使用constructor属性可以判断绝大部分数据的类型。但是,对于undefined和null特殊值,就不能使用constructor属性,因为使用JavaScript解释器会抛出异常。此时可以先把值转换为布尔值,如果为true,则说明不是undefined和null值,然后再调用constructor属性,例如:

  1. var value = undefined;
  2. alert(typeof value); //"undefined"
  3. alert(value && value.constructor); //undefined
  4. var value = null;
  5. alert(typeof value); //"object"
  6. alert(value && value.constructor); //null
    对于数值直接量,也不能使用constructor属性,需要加上一个小括号,这是因为小括号运算符能够把数值转换为对象,例如:
  7. alert((10).constructor);
    使用toString()方法检测对象类型是最安全、最准确的。调用toString()方法把对象转换为字符串,然后通过检测字符串中是否包含数组所特有的标志字符可以确定对象的类型。toString()方法返回的字符串形式如下:
  8. [object class]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
javascript挑战编程技能-第九题:数据结构
javascript挑战编程技能-第九题:数据结构
10 0
javascript挑战编程技能-第六题:检查密码强度
javascript挑战编程技能-第六题:检查密码强度
36 0
javascript挑战编程技能-第四题:谈个if讲点逻辑
javascript挑战编程技能-第四题:谈个if讲点逻辑
16 0
javascript挑战编程技能-第八题:99乘法表
javascript挑战编程技能-第八题:99乘法表
22 0
js实现页面重定向
在现行的网站应用中URL重定向的应用有很多: 404页面处理、网址改变(t.sina转到weibo.com)、多个网站地址(如:http://www.google.com/ 、www.g.cn )等; 本质上就是将当前使用者的网址从一个网址导向到另外的一个网址上面去; 实现重定向的方式有很多种...
631 0
JS+DIV实现自定义Title的显示方式
     自定义的title显示方式一直在华夏用,当你的鼠标悬停在带有提示的链接上时会有自定义的显示内容出现,显示的内容支持html代码,但是这个效果不支持firefox及其他浏览器,最近对之进行了改进,终于兼容了FF,Safari。代码如下:   var qTipTag = "a"; //Which tag do you want to qTip-ize? Keep it lowerc
1033 0
JS实现回调例子
function f_2(id){ return -id;}// func即回调函数function f_1(id,func){ id++; id=func(id); return id;}function f_3(){ var id=f_1(1,f_2); alert(id);}f_3();
617 0
用vbs、js 实现访问指定页面
在计划任务中添加Run.vbs 或 Run.jsRun.vbs ' Create an instance of IEDim IESet IE = CreateObject("InternetExplorer.
875 0
省市区三级联动,JS实现
文件下载地址:http://files.cnblogs.com/files/chenwolong/jsAddress.rar 示例截图: 在这里自己记录一个方法: function cmbAddOption(cmb, str, obj) { var option = document.
2398 0
js 实现谷歌浏览器中隐藏标签后setInterval事件暂停
Interval_control= setInterval(function(){newsSlide_ChangeImg(-1,'left',start_time);},3000);//设置自动切换函数 window.
761 0
+关注
zhanginzaghi
IT菜鸟
90
文章
25
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载