Skip to content
Menu
Yuuk的博客
  • 首页
  • 前端技术
    • JavaScript
    • HTML & CSS
  • SEO
  • 设计
    • 素材分享
    • 设计教程
  • 随笔
Yuuk的博客

一个对 undefined 的判断引发的思考

Posted on 2019年1月20日2019年1月21日 by yuuk

最近学习小程序开发时在有赞小程序UI库Vant-Weapp中看到这样一行代码:

function VantComponent(vantOptions) {
  if (vantOptions === void 0) {
    vantOptions = {};
  }
  ...
}

重点在 vantOptions === void 0 ,看到这行代码的第一眼就引起了我的思考,为什么要这么判断呢?🤔

我们不妨看看 void 0 是个啥,这里涉及到一个知识点,那就是 void 运算符,我们去 MDN 上看看对 void 运算符的描述:

void 运算符通常只用于获取 undefined 的原始值,一般使用 void(0) (等同于void 0 )。

可见,这种写法的目的主要是获取 “真正” 的 undefined,那为什么不直接 vantOptions === undefined 呢?难道是为了节省字节么 😂

我们知道,在 Javascript 中许多内置对象是可以被重写的,比如下面的代码,将内置的 Object 重新赋值:

window.Object = 'test';
console.log(Object); // test

undefined 这个特殊的内置对象也不例外,也可以被重写。

注意,undefined 在全局环境下面无法被修改,对比下面的例子:

// 无效
window.undefined = 'test';
cconsole.log(undefined); // undefined

// 有效
;(function(){
    var undefined = 'test';
    console.log(undefined);// 'test'
})();

虽然修改内置对象在项目中一般不会出现,但是作为一个开源库使用这种严谨的判断还是很有必要的,这样也会减少一些奇怪的 bug。

最后总结使用这种方式判断的好处:

1、节省字节

2、避免奇怪的 bug

打赏赞(2)分享

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

搜索

近期文章

  • 宝塔面板中使用docker部署nodejs应用
  • 如何将docker镜像上传到阿里云
  • React Native 报错 No bundle URL present 解决方法
  • axios 给每一个请求添加耗时统计
  • css filter属性导致fixed失效

标签

addEventListener ajax ajax跨域 chatAt css居中 DNS缓存 docker gulp ie7 json jsonp margin memcache mysql nodejs ps技巧 typescript void vpn vuejs wampserver webpack win10 XMLHttpRequest z-index 事件冒泡 事件绑定 内容发布时间 图片加载 大写 字符串 封装ajax 广告屏蔽 批量修改图层名称 水平垂直居中 注册码 特殊符号 百度 空元素 站长平台 网页快照 负边界 递减 随机数 首字母

友情链接

  • 蔡甸新闻网
©2025 Yuuk的博客 | 鄂ICP备13014750号-9