区分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"

以上说明NaN是一种特殊的number,和null、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相关推荐

  1. 2022-JavaScript-过滤数组中的undefined,null,空串,NaN

    2022-JavaScript-过滤数组中的undefined,null,空串,NaN let arr = [1,'',2,null,3,NaN,4,unfined,5,'',6] let arr1 ...

  2. javascript中的undefined,null,,0和false的云集

    在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,bool ...

  3. 区分JavaScript中slice与splice方法

    区分JavaScript中slice与splice方法 slice()方法是从已有的数组中返回通过索引选定的元素. 语法:array.slice(startIndex,endIndex) 参数star ...

  4. 如何检查JavaScript中的数字是否为NaN?

    我只是在Firefox的JavaScript控制台中尝试过,但是以下任何一条都不返回true: parseFloat('geoff') == NaN;parseFloat('geoff') == Nu ...

  5. JavaScript中如何严格的判断NaN

    参考文章:http://www.jb51.net/article/31355.htm 1.问题 在FreeCodeCamp上碰到这样一道题: 删除数组中的所有假值. 在JavaScript中,假值有f ...

  6. Javascript中0除以0得到NaN,1除以0得到infinity(无穷尽)

    1.任何数值除以0都会导致错误而终止程序执行.但是在 JavaScript 中,会返回出特殊的值,因此不会影响程序的执行. 2.比0大的数除以0,则会得到无穷大,所以 js 用 Infinity 来显 ...

  7. javaScript中的undefined

    Undefined类型 Undefine类型只有一个值,就是undefined,通过let或者var声明的变量但没有初始化时,就相当于给变量赋予了undefined,对于const和不加修饰符的变量必 ...

  8. javascript中的undefined 和 not defined

    经研究发现,两者之间有很大的区别,不知从英语讲,这两者都有啥区别,研究结果如下 测试os:ubuntu 测试浏览器:chrome 测试案例1 console.log(a) 报错 ReferenceEr ...

  9. JavaScript中setTimeout实现轮询 (vs setInterval)

    setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,次数是一次. setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达 ...

最新文章

  1. 认识 android-job
  2. PyTorch深度学习实践03
  3. 兼容IE与firefox的css 线性渐变(linear-gradient)
  4. word2vec python 代码实现_python gensim使用word2vec词向量处理中文语料的方法
  5. 软件工程(2019)第二次作业
  6. vuedraggable嵌套块拖拽_Vue.Draggable拖拽效果
  7. 先序、中序和后序数组两两结合重构二叉树 -- 图解
  8. ubuntu更新源 apt-get install Unable to locate package
  9. 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
  10. fx2n4ad模块中文手册_FX2N-4AD初级教程三菱FX2N-4AD用户指南手册 - 三菱
  11. 夏泽网 中国渔业统计年鉴年鉴资料网
  12. python导入鸢尾花数据集_python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析...
  13. 45 pinctrl子系统 和 gpio子系统
  14. java调用高德地图获取经纬度
  15. 深度学习-吴恩达 作业 Tensorflow环境部署
  16. 遗忘曲线艾宾浩斯规律
  17. OOM问题原理解析(四):Bitmap压缩方案总结
  18. Linux连接redis数据库
  19. XYOJ1255: 寻找最大数X(按数的一个一个元素输出)
  20. 虚拟主机如何连接MYSQL数据库呢?

热门文章

  1. 剑指offer_02
  2. django框架学习文档_Python四大主流网络编程框架,你知道么?
  3. 华为弹性云服务器ECS使用学习0
  4. 白话解说:阻塞和非阻塞,同步和异步
  5. centOS安装python3.7.2
  6. 读书印记 - 《创新者的解答》
  7. 8.类定义、属性、初始化和析构
  8. 机器视觉系统需要考虑的十个问题
  9. HDU 2234 IDA*
  10. Oracle-一个中文汉字占几个字节?