博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
void 0 或者 undefined
阅读量:5899 次
发布时间:2019-06-19

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

Problem

在检查一个值是否为undefined的时候。你们是假设去測试的?

要是之前的我会这样子測试

function isUndefined(obj){   return obj === undefined;}

可是近期在看《javascript框架设计》这本书的时候,他用了第二种方法,我就有点纳闷了。

function isUndefined(obj){   return obj === void 0;}

两者谁比較好点呢?怎样比較呢?应该从它的适用性、浏览器兼容性来比較!

然后我就在MDN找到void操作符的定义和undefined的说明,才知道《javascript框架设计》中的方法略胜一筹。

为什么呢?以下来解说

Description

void
The void operator evaluates the given expression and then returns undefined.也是就是说void是一个操作符。它总是返回的是undefined这个值
undefined
The global undefined property represents the value undefined.就是说undefined事实上是一个全局变量,它的是就是代表着undefined。

我们能够用window.hasOwnProperty("undefined");去測试,返回true就证明它是全局变量。

既然它是全局变量的话,我们就能够改动它了,在改动一些特定变量方面ES3和ES5中是不一样的。ES3中每一个变量都是可写可配置可遍历的。可是ES5设置一些API去设置变量的这些特性。

我们能够在chrome(支持ES5)的控制台敲上一句这样子的代码Object.getOwnPropertyDescriptor(window,"undefined"),我们能够看见他打印出来的是Object {value: undefined, writable: false, enumerable: false, configurable: false}

能够看见在ES5中的undefined值是不能改动(即writable为false)的,可是在旧的浏览器比方IE7、8。你就能够改动undefined的值,导致你的isUndefined失去效果了。

Why void 0, specifically?

stackoverflow站点的一个问题有提到一定要用void 0吗?不能是void 1,void 10000,void "hello world" 或者其它吗?答案都是能够的,仅仅是0给人的感觉就是简短、惯用.

Reference

转载地址:http://yehsx.baihongyu.com/

你可能感兴趣的文章
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
我的友情链接
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
BeanUtils\DBUtils
查看>>
python模块--os模块
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
学习进度表 04
查看>>