代码改变世界

《javascript高级程序设计》笔记4.1.4:检测类型

  盛世游侠  阅读(215)  评论(0编辑  收藏  举报

javascript类型检测这节主要讲了typeof和instanceof操作符。

一、typeof操作符:

1、typeof在检测基本数据类型时十分方便,针对4种基本数据类型string、number、boolean、undefined将返回它们各自对应的类型字符串:

typeof "time"; //string

typeof 22; //number

typeof true; //boolean

typeof ship; //undefined  ship为未定义变量

2、typeof在检测引用类型object类型时用处不大,因为我们通常并不是想知道某个值是对象,而是想知道它们是什么类型的对象,这时我们需要用到instanceof操作符,instanceof操作符在检测基本数据类型时始终会返回false,因为基本类型不是对象。

3、 typeof是一个操作符,不是一个函数,因此它既可以操作一个具体的值也可以操作一个变量或表达式,它操作的值或变量并不一定要加上括号;

4、使用typeof检测函数时,会返回"function",在safari5及之前版本和chrome7及之前版本中使用typeof检测正则表达式时,由于规范原因,这个操作符也返回"function"。ECMA-262规定任何在内部实现了[call]方法的对象都应该在应用typeof操作符时返回"function"。由于上述浏览器的正则表达式也实现了这个方法,因此对正则表达式应用typeof会返回"function",而在IE和Firefox中,对正则表达式应用typeof会返回"object"。

5、typeof 对未初始化的变量和未声明的变量都会返回"undefined",而其实这两种变量是有区别的,见如下代码:

复制代码
var time;
alert(time); //undefined;


//下面的 timestamp是一个未经过声明的变量

alert(timestamp); //产生错误



alert(typeof time);  //undefined

alert(typeof timestamp); //undefined
复制代码

 

二、typeof容易犯的错误:

1、把返回字符串记错,记成首字母大写,而实际上返回字符串的首字母并不是大写。把"number"记成"Number"、"string"记成"String"、"boolean"记成"Boolean"、"undefined"记成"Undefined"等;

2、忽略typeof在IE和Firefox与在chrome7之前版本和safari5之前版本中的差异。

3、将typeof null == "object"错记成typeof null == "";

编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
点击右上角即可分享
微信分享提示