为什么undefined、NaN和Infinity可以被赋值,而null不可以?

JSON 2016-08-22 18:18:28 4602

如下代码:

undefined = 123;
NaN = 123;
Infinity = 123;
null = 123; // 报错:Uncaught Reference Error

undefined/NaN/Infinity是全局属性,这些属性是不可写(writable:false)的,也就是说在全局作用域内不能重新赋值(赋值无效,不会报错);

null是一个JavaScript字面量(而不是全局对象的一个属性),不能对其赋值。

因为null javascript  的关键字,而undefined虽然含义和null很像,但是他是js预定义的一个全局变量,他的值就是'undefined'。

其实早在ES3中,有一个bugundefined是一个可读可写的变量,可以给他赋任意值,但到了ES5就被修复了,他是一个只读的值,所以虽然没有报错,但是赋值语句是没有效果的。

在《javascript权威指南》(第六版)中对于null的描述就是:null is a language keyword that evaluates to a special value that is usually used to
indicate the absence of a value.

其实在这里指的关键字和保留字是一个意思,没必要斤斤计较。



版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/45.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Java赋值运算符
Java赋值运算符
JSON是什么?它能带来什么?它XML比较?
为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比
Java JSON 组件选型之 FastJson 为什么总有漏洞?
网站的pr什么意思?
网站的pr什么意思?
老黄历有红色绿色是什么意思?它们有的寓意?
DES算法的基本原理主要步骤是什么?
dns污染怎解决?为什么会出现这种情况?
最新文章
Linux I/O重定向 4457
Ruby 循环 - while、for、until、break、redo 和 retry 2302
Node.js:全局对象 2177
如何使用终端检查Linux上的内存使用情况 1980
JavaScript对象详细剖析 1740
Python print() 函数 1752
PHP if/else/elseif 语句 1897
HTML5 Canvas弧线教程 1737
Java赋值运算符 2046
XML内部实体和外部实体 1972
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 689092
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675478
免费天气API,天气JSON API,不限次数获取十五天的天气预报 638360
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 615757
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 558183
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510376
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481991
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 272689
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 245005
Elasticsearch教程(一),全程直播(小白级别) 228664
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...