js null undefine
原文链接: js null undefine
上一篇: dom 2 xlsx
下一篇: js new 运算符 自定义实现
https://www.cnblogs.com/qyzy1024/p/4036661.html
二、历史原因
最近,我在读新书 《Speaking JavaScript》 时,意外发现了这个问题的答案!
原来,这与JavaScript的历史有关。1995年 JavaScript诞生 时,最初像Java一样,只设置了null作为表示"无"的值。
根据C语言的传统,null被设计成可以自动转为0。
Number(null) // 05 + null // 5
但是,JavaScript的设计者Brendan Eich,觉得这样做还不够,有两个原因。
首先,null像在Java里一样,被当成一个对象。但是,JavaScript的数据类型分成原始类型(primitive)和合成类型(complex)两大类,Brendan Eich觉得表示"无"的值最好不是对象。
其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误。
因此,Brendan Eich又设计了一个undefined。
三、最初设计
JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
Number(undefined) // NaN5 + undefined // NaN
四、目前的用法
但是,上面这样的区分,在实践中很快就被证明不可行。目前,null和undefined基本是同义的,只有一些细微的差别。
null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
var i; i // undefinedfunction f(x){console.log(x)} f() // undefinedvar o = new Object(); o.p // undefinedvar x = f(); x // undefined
然后来看下JS中几个空值的类型:
1 2 3 4 5 |
|
这五个值的共同点是,在if语句中做判断,都会执行false分支。当然从广义上来看,是说明这些数值都是其对应数据类型上的无效值或空值。还有这五个值作!运算,结果全为:true。
最后来我们看下这五个值做字符串转换时的差异
1 2 3 4 5 |
|
js null undefine相关推荐
- js null ,null没有typeof返回值为undefine 即 null没有返回类型的
var user="<%=session.getAttribute("username")%>"; alert(user); alert(user. ...
- js null加法的处理
首先看一段JS高级编程中,有关加法(+)操作符的解释: 一个简单的测试: alert(3 + null); // 3 alert('3' + null); // 3null 可见对于null的处理,并 ...
- 前端学习(3265):js中undefine中3相关属性
- 前端学习(3264):js中undefine中二相关属性
- 前端学习(3263):js中undefine
- php的对象和数组应该学js,JavaScript数组与对象的常用方法及 json 的序列化
一.JavaScript数据类型: 1- 原始类型:number(数值),string(字符串),boolean(布尔值)var age = 18; var username = "admi ...
- JavaScript/Js 大全
尊重原创,原文链接 Java Script 基础 一. JS的简介 JavaScript是一种网页编程技术,经常用于创建动态交互网页 JavaScript是一种基于对象和事件驱动的解释性脚本语言,类 ...
- JavaScript检查null与undefined以及==和===之间的差异
如何检查变量是否为null或undefined并且null和undefined什么区别? ==和===什么区别(很难在Google上搜索" ===")? #1楼 区别是微妙的. 在 ...
- JavaScript使用localStorage缓存Js和css文件
对于WebApp来说,将js css文件缓存到localstorage区可以减少页面在加载时与HTTP请求的交互次数,从而优化页面的加载时间.特别是当移端信号不好高延迟时优化效果还是很显见的 下面的代 ...
最新文章
- linux用echo重定向到文件,Linux – Bash将String重定向到文件
- sharepoint列表EventHandle的开发 -转
- 儿童吹泡泡水简单配方_儿童吹泡泡水简单配方[组图]
- linux进程间的通信(C): 共享内存
- ipython是一个交互式计算机系统_IPython 1.0发布,强大的Python交互式Shell
- php 5.6 zend opcache,使用Zend OpCache 提高 PHP 5.5+ 性能
- linux查看CPU高速缓存(cache)信息
- Unity3d大会的部分总结
- maven依赖冲突以及解决方法
- animate改变背景颜色_3D MAX2016视口背景设置里各参数的含义详解 - 3dmax基础操作入门教程-3dmax材质教程,3d材质贴图教程参数,vray材质参数,3dmax贴图教程...
- pyqt5优秀项目python_基于Pyqt5打造量化系统GUI
- win10打开蓝牙_win10动态锁,只要你离电脑远一点,电脑就自动锁定
- SVM多分类的几种方式
- 手机怎么修改浏览器的html,手机设置默认浏览器
- 如何利用linux解除手机bl锁,小米手机解BL锁教程(小米手机详细图文详解解锁Bootloader教程)...
- 中小企业(OA)办公系统方案 huangai[VA]
- 免费地图资源(持续更新)
- FFMPEG+SDL播放音频流
- 常用的算法(PHP 版)
- 推荐3个游戏小程序,让你整个暑假都充实!