资讯专栏INFORMATION COLUMN

void 0 与 undefined的区别

scq000 / 2528人阅读

摘要:但是在局部作用域中,还是可以被重写的。也就是说,后面你随便跟上一个表达式,返回的都是,如。并且是不能被重写的。但为什么是呢,是表达式中最短的。用代替能节省字节。不少压缩工具在压缩过程中,正是将用代替掉了。

看到了这个么一段代码.

        function foo() {
                    var a  = arguments[0] !== (void 0 ) ? arguments[0] : 2;
                return a; 
        }

void 0 返回undefined,我们都知道的,但是为什么不直接 arguments[0] !== undefined?

1.undefined可以被重写
undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。

(function() {
var undefined = 10;

// 10 -- chrome
alert(undefined);
})();

(function() {
undefined = 10;

// undefined -- chrome
alert(undefined);
})();

2.为什么选择void 0 作为undefined的替代
void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,如 void (2), void (‘hello’)。并且void是不能被重写的。但为什么是void 0 呢,void 0 是表达式中最短的。用 void 0 代替 undefined 能节省字节。不少 JavaScript 压缩工具在压缩过程中,正是将 undefined 用 void 0 代替掉了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106122.html

相关文章

  • void关键字有个毛用?

    摘要:如果你有印象,甚至是中的个关键字之一,根据官方标准,它是一个一元操作符,它的唯一作用就是返回一个,不管这个操作符后面传的操作数是什么。关于数组中的,还有一些很奇怪的地方,比如,如何区分下面这两个数组中的各项是不是相同下次再说。 恩,这是个问题。如果你有印象,void甚至是js中的26个关键字之一,根据ECMA官方标准,它是一个一元操作符,它的唯一作用就是返回一个undefined,不管...

    sherlock221 评论0 收藏0
  • null undefined 区别

    摘要:一定义是的关键字,表示一个特殊值,常用来描述空值,运算返回,所以可以将认为是一个特殊的对象值,含义是非对象。调用函数时,应该提供的参数没有提供,该参数等于。 一 定义 null 是 javascript 的关键字,表示一个特殊值,常用来描述空值,typeof 运算返回object,所以可以将 null 认为是一个特殊的对象值,含义是非对象。 undefined 是预定义的全局变量,他的...

    elisa.yang 评论0 收藏0
  • 你不知道JavaScript中卷 第一、二章

    摘要:表达式没有返回值,因此返回结果是。并不改变表达式的结果,只要让表达式不返回值按惯例我们用来获得这主要源自语言,当然使用或其他表达式也是可以的。不是数字的数字如果数学运算的操作数不是数字类型,就无法返回一个有效的数字,这种情况下返回值为。 这里的内容是读书笔记,仅供自己学习所用,有欠缺的地方欢迎留言提示。 第一部分 类型和语法 第1章 类型ECMAScript语言类型包括Undefin...

    levy9527 评论0 收藏0
  • Js基础——数据类型之Null和Undefined

    摘要:原始值就是值本身不可改变,并且没有方法和属性。操作的时候看似操作原始值,其实是操作它的副本。代表空指针,就是没有对象存在,它不是全局对象的属性。这也是为什么需要替代它的原因。别忘了它们是不同的类型栗子参考资料 原始值就是值本身不可改变,并且没有方法和属性。操作的时候看似操作原始值,其实是操作它的副本。 Null 代表空指针,就是没有对象存在,它不是全局对象的属性。Null type对应...

    jubincn 评论0 收藏0
  • Javascript数据类型基本运算

    摘要:常见的关键字有等等常见的保留字有等等本文可能会直接用到的有定义一个变量在浏览器控制台或后台终端输出一个值在浏览器弹窗输出一个值基本数据类型基本类型包括数值,字符串,,和布尔型。 标识符命名规则 对于变量名,键值对中的键名应满足如下要求: 开头必须是字母、下划线(_)或美元符号($) 除了开头以外的字符也可以是数字 不可以是关键字和保留字 最好不要和全局变量/函数同名,会把原有变量/函...

    jimhs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<