javascript于"return obj === void 0"这样的书面理由和优势
得知underscore.js什么时候,查看源代码经常出现的类别似下面的代码:
if (context === void 0) return func; if (array == null) return void 0;
曾经没有见过这样的写法。到网上搜了一些资料。刚好发现stackoverflow上也有人提出类似的疑问。这里总结归纳下。做个笔记。
void事实上是javascript中的一个函数,接受一个參数,返回值永远是undefined。能够说,使用void目的就是为了得到javascript中的undefined。Sovoid 0
is a correct and standard way to produce
undefined
.
void 0
void (0)
void "hello"
void (new Date())
//all will return undefined
为什么不直接使用undefined呢?主要有2个原因:
1、使用void 0比使用undefined可以降低3个字节。尽管这是个优势。个人但感觉意义不大,牺牲了可读性和简单性。
>"undefined".length
9
>"void 0".length
6
2、undefined并非javascript中的保留字,我们能够使用undefined作为变量名字,然后给它赋值。
alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) //alerts "new value"
Because of this, you cannot safely rely on undefined having the value that you expect。
void, on the other hand, cannot be overidden. void 0 will always return。
我在IE10,Firefox和chrome下測试。遗憾的是没有出现预期的结果。尽管上面的代码没有报错,可是并没有打印出我们期望的"new value"。
所以整体来说。使用void 0这样的写法意义不大。
參考
http://stackoverflow.com/questions/7452341/what-does-void-0-mean
版权声明:本文博客原创文章。博客,未经同意,不得转载。
javascript于"return obj === void 0"这样的书面理由和优势的更多相关文章
- href="javascript:void(0);"与#差异
将<a>标签设置为空链接有两种方式.第一个是href="#",第二个是href="javascript:void(0);". 两种方式都设置了标签为 ...
- void 0 或者 undefined
Problem 在检查一个值是否为undefined的时候.你们是假设去測试的? 要是之前的我会这样子測试 function isUndefined(obj){ return obj === unde ...
- 你真的知道为什么要使用void(0)代替undefined吗?
我们平时用到的\(\color{#FF3030}{undefined}\)只是\(\color{#FF3030}{window}\)对象下的一个属性. Object.getOwnPropertyDes ...
- js中 javascript:void(0) 用法详解
点击链接不做任何事情: <a href="#" onclick="return false">test</a> <a href=& ...
- a href=#与 a href=javascript:void(0) 的区别
a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onCl ...
- href使用 javascript:;与javascript:void(0)防跳到顶部
有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢 ...
- 转载 a href=#与 a href=javascript:void(0) 的区别
a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onCl ...
- a href=#与 a href=javascript:void(0) 的差别
a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onCl ...
- a标签中的href="#"与href="javascript:void(0)"区别
转自http://blog.csdn.net/fightplane/article/details/5190037 <a href="#"> 点击链接后,页面会向上滚到 ...
随机推荐
- Android 监听SMS短信
当设备接收到一条新的SMS消息时,就会广播一个包括了android.provider.Telephony.SMS_RECEIVED动作的Intent. 注意,这个动作是一个字符串值,SDK 1.0不再 ...
- TSL230选型
tsl230是一种可以直接将光强转化成频率值的器件.详细原理就不介绍了,数据手冊里写的都非常清楚,230系列包括非常多种,主要为下面四类:TSL230,TSL230A,TSL230B系列:TSL230 ...
- 一个简单而经典的RTX51 Tiny应用实例
关于RTX51 Tiny嵌入式实时操作系统的描写叙述请參考本人的上一篇博文(RTX51 Tiny实时操作系统学习笔记-初识RTX51 Tiny). 本篇博文.我将通过一个实例代码,带大家深入了解一下R ...
- 虚拟化技术学习(一)在VMware虚拟机中安装KVM
近期一直研究虚拟化技术,曾经对VMware虚拟机有一定的了解,近期突发奇想,能不能在VMware虚拟机中再装一个虚拟机呢? 那么问题就来了,首先,你须要一台电脑,vmware软件,(本人的电脑配置渣渣 ...
- Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...
- windows phone 页面传值(7)
原文:windows phone 页面传值(7) 在windows phone 中微软为我们提供了页面间传递参数的解决方案,下面就为大家介绍使用方法,页面传值的案例中我们建立两个页面,一个是MainP ...
- PHP计算中文字符串长度 、截取相应中文字符串
PHP计算字符串长度 及其 截取相应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,' ...
- iOS Dev (59) 高度自适应的UITextView
iOS Dev (59) 高度自适应的UITextView 作者:阿锐 地址:http://blog.csdn.net/prevention - 例如以下 _inputTextView 为一个 UIT ...
- java reflect反思总结
--------------TestBean package lh.demo.bean; public class TestBean { private String userName; priv ...
- android 网络运营商的名字显示规则(锁定屏幕,下拉列表)
一:Background & 有关flow MTK Operator name display分为两种类型的手机: 1. Sim卡名称: 从基于引导SIM卡读取IMSI到Spn-conf.xm ...