区分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"
以上说明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),代码逻辑可能不是你想要的结果!
分类:
其它
标签:
JavaScript
, ExtJS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
2008-04-20 递归改非递归