博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于js 的typeof运算符
阅读量:6154 次
发布时间:2019-06-21

本文共 1099 字,大约阅读时间需要 3 分钟。

hot3.png

    以前打码的时候,在判断变量是否已经定义,一般都是使用 变量==undefined,其实这并没有错,我们确实可以直接这样判断,但是有人建议用 typeof来判断是否是undefined;

    我直接写出了类似下面的代码:

if( typeof (  a ) == undefined ){    //do something }

    然后这个bug就出来了,我没初始化a,这个if返回的却是false;

    这是很费解的东西,因为这显而易见了,a 没有初始化,我用

//我采用下列方式查看aalert(a); //undefinedconsole.log(a);//undefinedconsole.log(  typeof(a)); //undefined

    上面的调试结果都是undefined,那我就纳闷了,为什么 typeof( a ) == undefined 不是true,打码的时候因为时间问题没有细想,就把这个问题记录下来了。

    然后你可能就猜中了,这是一个低级错误,稍微想一下就知道,typeof既然是返回数据类型的,返回的结果有string,number,object,boolean,function,undefined,这说明什么了?

    如果我想判断一个变量是不是数字,难道我会像下面这样写吗?

if( typeof (  a ) == number ){    //do something }

    很明显你不会这样写,因为js没有number这个东东,此时你会想到:

if( typeof (  a ) == 'number' ){    //do something }

    对的这样写就是对的,typeof返回的事字符串结果,差点吐血,然后那个bug就这样被解决了:

if( typeof (  a ) == 'undefined' ){    //do something }

    官方文档也说的很清楚:

    typeof 运算符是返回一个用来表示表达式的数据类型的字符串。

    typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined.

    本来是经常查官方文档的,但是这次因为事太多并没有去查,这就直接导致了这个问题困扰了我几天,但是这是得不偿失的,遇到对函数语法的问题,查官方文档永远是最准确的,要养成查官方文档,甚至阅读官方文档的习惯。

    记录这个问题的始末,就是提醒自己多阅读官方文档!

    

转载于:https://my.oschina.net/monsterslayer/blog/268450

你可能感兴趣的文章
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
redhat6.1下chrome的安装
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
类与成员变量,成员方法的测试
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>