首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >typeof!==“undefined”vs.!= null?

typeof!==“undefined”vs.!= null?

提问于 2017-12-26 06:43:38
回答 2关注 0查看 384

我经常看到这样检查未定义参数的JavaScript代码:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
if (typeof input !== "undefined") {
代码语言:txt
AI代码解释
复制
    // do stuff
代码语言:txt
AI代码解释
复制
}

这看起来很浪费,因为它涉及到一个类型查询和一个字符串比较,更不用说冗长了。这是需要的,因为'未定义'可以被重命名。我的问题是:该代码如何比这种方法更好:

if (null != input) {

// do stuff

}

据我所知,你不能重新定义null,所以它不会意外中断。而且,由于!=运算符的类型强制,这将检查undefined和null ...这通常正是你想要的(例如对于可选的函数参数)。然而,这种形式似乎并不普遍,甚至导致JSLint使用邪恶的!=运算符来大吼你。为什么这被认为是不好的风格?

回答 2

不知雨

发布于 2017-12-26 06:53:31

如果变量被声明(或者用var关键字,作为函数参数,或者作为全局变量),我认为最好的方法是:

代码语言:txt
AI代码解释
复制
if (my_variable === undefined)

jQuery做到了,所以这对我来说已经足够了:-)

否则,你将不得不使用typeof避免一个ReferenceError。

如果你期望undefined被重新定义,你可以像这样包装你的代码:

代码语言:txt
AI代码解释
复制
(function(undefined){
代码语言:txt
AI代码解释
复制
    // undefined is now what it's supposed to be
代码语言:txt
AI代码解释
复制
})();

秋之夕颜清

发布于 2017-12-26 06:53:16

ypeof允许标识符从来没有被声明过。所以在这方面更安全:

代码语言:txt
AI代码解释
复制
if(typeof neverDeclared == "undefined") //no errors
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined
和开发者交流更多问题细节吧,去 写回答
相关文章
JavaScript typeof, null, 和 undefined
JavaScript typeof, null, undefined, valueOf()。
陈不成i
2021/07/16
8810
null == undefined ?
最近在看《JavaScript高级程序设计》一书,书中讲到相等操作符(==)时说,要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,但要记住 null == undefined 会返回 true 。的确,在ECMAScript规范中也是这样定义的,但我认为这样来理解这件事情,似乎有些浮于表面,网上也有很多关于这个问题的文章,下面我希望从一个全新的角度来分析 null 和 undefined 的区别,从而理解两者为何会相等:
疯狂的技术宅
2019/03/28
2.5K0
null == undefined ?
null 和 undefined
浏览器会弹出窗口显示 undefined。因为对于使用了 var 声明但没有进行初始化定义的变量, 其值默认为 undefined。
Chor
2019/11/08
1.8K0
undefined vs null
许多编程语言都有一个空值(non-value)null:表示存在一个变量但是没有指向一个对象。
前端柒八九
2022/08/25
1.1K0
TypeScript-null和undefined
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/09/28
2330
null 和 undefined 的区别!
许多编程语言都有一个称为null的非值。它指示一个变量当前不指向一个对象,例如,当它还没有初始化的时候。
前端小智@大迁世界
2022/03/22
1.2K0
undefined与null的区别
大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。 有点奇怪的是,JavaScript语言居然有两个表示"
ruanyf
2018/04/12
1.2K0
undefined与null的区别
null和undefined的区别
在Js中null与undefined是两种基本数据类型,都可以用来表示"无"这个概念,但是在语义表达以及实际使用上是有所区别的。
WindRunnerMax
2020/08/27
2.5K0
typeof运算对于null会返回“Object"
您也许会问,为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。
阮键
2019/08/07
2.3K0
JavaScript中undefined与null详解
对于undefined和null我一直知道他们有很多区别,也知道一点关于他们的区别,但却不具体系统,因此总结了一下,主要心得如下:
Javanx
2019/09/04
7850
JavaScript中undefined与null详解
JavaScript基础:typeof null 为什么返回object
null本身实际上是基本类型,但是Javascript在存储的时候,会将不同的对象在底层存储都使用二进制的方式存储,在Javascript中如果二进制的前三位都为0的话就会被判断为object,null的二进制存储表示形式为全是0,自然前三位也是0,因此执行typeof时会返回”object”。
IT工作者
2022/01/26
3.1K0
JavaScript 的 null 和 undefined 判断
在最开始的时候,JavaScript 通常会被定义为是一个解释型语言。这个语言的特点是不需要编译,直接解释使用。
HoneyMoose
2021/08/17
1.4K0
JavaScript 的 null 和 undefined 判断
NaN和Infinity,null和undefined
看到这个标题,大家对这4个变量应该都不陌生,但若说起他们的差别或者是举个小栗子判断结果,估计就有点晕乎乎的了。
jojo
2022/04/01
1.2K0
详解 undefined 与 null 的区别
undefined 的字面意思就是:未定义的值 。这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果 。 这种原始状态会在以下 4 种场景中出现:
前端达人
2019/12/24
1.5K0
详解 undefined 与 null 的区别
Javascript 中 null和undefined的区别
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
wfaceboss
2019/04/08
7990
Javascript中null和undefined的区别?
null:空值,一般主动赋值才会出现。表示主观上这个变量的值就是空的,比如你去获取蒙奇 D 鸣人的资料,这人不存在,那么返回的值就应该是 null。
IT工作者
2022/01/15
5320
JS中Null与Undefined的区别
Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。 Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。 Screenshot (12).png js 代码 var oValue; alert(oValue == undefined); //output "true" 这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。 js 代码 a
前朝楚水
2018/04/02
3.6K0
JS中Null与Undefined的区别
从此理解清楚undefined与null
在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。
matinal
2023/10/13
1490
TypeScript-去除null和undefined检测
先不管三七二十一,首先来看一个函数的定义,该函数的内部返回了一个函数的回调,主要作用就是获取一个字符串的长度,可是呢函数的入参是一个联合类型,如下:
杨不易呀
2023/09/28
4400
Typescript中undefined与null的区别
ts配置文件中有个选项 "strictNullChecks" 如果设置值为false,那么以下代码都不是问题 ,如果设置为true, 以下代码可以说明undefined和null在ts中的区别
lilugirl
2020/06/28
3.4K0

相似问题

在JavaScript中的null和undefined有什么区别?

2400

条件判断中变量 none,null.undefined 有什么区别?

1260

Cannot read property 'vodSessionKey' of undefined?

0214

js中的typeof运算符问题?

1316

官方方法 updateMyProfile 返回 undefined?

1249
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档