区分JavaScript中的undefined,null和NaN
区分underfined,null和NaN
先看看下面语句的运行结果:
1: var a;
2: alert(a); //显示"undefined"
3: alert(typeof a); //显示"undefined"
4: alert(b); //显示"undefined"
以上说明a的值和类型都是'underfined'
1: var a = null;
2: alert(a); //显示"null"
3: alert(typeof a); //显示"object"
以上说明赋值为null的变量,值为null,类型为object
1: var b;
2: alert(null==b); // 显示"true"
3: alert(null == undefined); //显示"true "
以上说明undefined与null是相等的
1: var a1; //值和类型都是'underfined'
2: var a2 = null; //值为null,类型为object
3: alert(a1 == a2); //显示"true"
以上两例说明null和underfind很相似,至少undefined与null是相等的。
1: alert(100 + null); //显示"100"
2: alert(100 + undefined); //显示"NaN"
以上说明null和underfind虽然很相似,但还是有小区别的,嘿嘿!
underfined: 未知的变量名,或未赋值的变量。
null: 特殊的object
NaN: 特殊的number
1: alert(typeof(undefined));//显示 'undefined'
2: alert(typeof(null));//显示 'object'
3: alert(typeof(""));//显示 'string'
4: alert(typeof(0));//显示 'number'
5: alert(typeof(false));//显示 'boolean'
6:
7: var a7 = NaN;
8: var a8 = undefined;
9:
10: alert(typeof a7); //显示"number"
11: alert(typeof a8); //显示"undefined"
函数参数没有和为空的判断
先看看下面的例子:
1: Test = function(a)
2: {
3: alert(typeof a);
4: }
5:
6: Test(); //没传参数,运行结果为"underfined"
7: Test(null); //传了空参数,运行结果为"object", 如果要使用a.length等,就会报错,因为对象为空!
正确的参数检查是:
1: Test = function(v)
2: {
3: if (v !== null && typeof v != 'undefined')
4: {
5: //使用v的属性,例如v.length, v.property
6: // if (v.offsetX != undefined)
7: // if ( value == undefined )
8: }
9: }
当然,也可以用 if(v) 来简化编码,可以检查v没给定和v为null的情况,但要注意,如果传入一个boolean的true或false,用if(v)就意味着 if( v == true),代码逻辑可能不是你想要的结果!
- ExtJS+ASP.NET实现真实的进度条显示服务器端长时间操作的进度
- ExtJS+ASP.NET实现异步Tree的节点搜索和查找下一个(FindNext)
- ExtJS+ASP.NET实现Tree节点的拖动(DragDrop)
- ExtJS+ASP.NET实现Grid到Tree的拖动(DragDrop)
- 使用YUI Compressor和DOS批处理脚本压缩JavaScript和CSS
- 优化JavaScript
- 区分JavaScript中的underfined,null和NaN
区分JavaScript中的undefined,null和NaN相关推荐
- 2022-JavaScript-过滤数组中的undefined,null,空串,NaN
2022-JavaScript-过滤数组中的undefined,null,空串,NaN let arr = [1,'',2,null,3,NaN,4,unfined,5,'',6] let arr1 ...
- javascript中的undefined,null,,0和false的云集
在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,bool ...
- 区分JavaScript中slice与splice方法
区分JavaScript中slice与splice方法 slice()方法是从已有的数组中返回通过索引选定的元素. 语法:array.slice(startIndex,endIndex) 参数star ...
- 如何检查JavaScript中的数字是否为NaN?
我只是在Firefox的JavaScript控制台中尝试过,但是以下任何一条都不返回true: parseFloat('geoff') == NaN;parseFloat('geoff') == Nu ...
- JavaScript中如何严格的判断NaN
参考文章:http://www.jb51.net/article/31355.htm 1.问题 在FreeCodeCamp上碰到这样一道题: 删除数组中的所有假值. 在JavaScript中,假值有f ...
- Javascript中0除以0得到NaN,1除以0得到infinity(无穷尽)
1.任何数值除以0都会导致错误而终止程序执行.但是在 JavaScript 中,会返回出特殊的值,因此不会影响程序的执行. 2.比0大的数除以0,则会得到无穷大,所以 js 用 Infinity 来显 ...
- javaScript中的undefined
Undefined类型 Undefine类型只有一个值,就是undefined,通过let或者var声明的变量但没有初始化时,就相当于给变量赋予了undefined,对于const和不加修饰符的变量必 ...
- javascript中的undefined 和 not defined
经研究发现,两者之间有很大的区别,不知从英语讲,这两者都有啥区别,研究结果如下 测试os:ubuntu 测试浏览器:chrome 测试案例1 console.log(a) 报错 ReferenceEr ...
- JavaScript中setTimeout实现轮询 (vs setInterval)
setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,次数是一次. setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达 ...
最新文章
- 认识 android-job
- PyTorch深度学习实践03
- 兼容IE与firefox的css 线性渐变(linear-gradient)
- word2vec python 代码实现_python gensim使用word2vec词向量处理中文语料的方法
- 软件工程(2019)第二次作业
- vuedraggable嵌套块拖拽_Vue.Draggable拖拽效果
- 先序、中序和后序数组两两结合重构二叉树 -- 图解
- ubuntu更新源 apt-get install Unable to locate package
- 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
- fx2n4ad模块中文手册_FX2N-4AD初级教程三菱FX2N-4AD用户指南手册 - 三菱
- 夏泽网 中国渔业统计年鉴年鉴资料网
- python导入鸢尾花数据集_python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析...
- 45 pinctrl子系统 和 gpio子系统
- java调用高德地图获取经纬度
- 深度学习-吴恩达 作业 Tensorflow环境部署
- 遗忘曲线艾宾浩斯规律
- OOM问题原理解析(四):Bitmap压缩方案总结
- Linux连接redis数据库
- XYOJ1255: 寻找最大数X(按数的一个一个元素输出)
- 虚拟主机如何连接MYSQL数据库呢?