是否有标准函数来检查 JavaScript 中的 null、未定义或空白变量?
问:
是否有一个通用的 JavaScript 函数来检查变量是否具有值并确保它不是 undefined 或 null?我有这段代码,但我不确定它是否涵盖所有情况:
function isEmpty(val){return (val === undefined || val == null || val.length <= 0) ? true : false;
}
答1:
huntsbot.com – 高效赚钱,自由工作
您可以检查 变量 是否具有 truthy 值。这意味着
if( value ) {}
如果 value 不是,将评估为 true:
无效的
不明确的
钠
空字符串 (“”)
0
错误的
上面的列表代表了 ECMA-/Javascript 中所有可能的 falsy 值。在 ToBoolean 部分的 specification 中找到它。
此外,如果您不知道变量是否存在(也就是说,如果它被声明),您应该检查 typeof 运算符。例如
if( typeof foo !== 'undefined' ) {// foo could get resolved and it's defined
}
如果您可以确定至少声明了一个 变量,则应直接检查它是否具有如上所示的 truthy 值。
如果该值是预期的错误布尔值怎么办。有时你想在没有值的情况下给出一个默认值,如果传入 false boolean,这将不起作用。
@TruMan1:在这种情况下(你的逻辑决定了验证)你必须像 if( value || value === false ) 一样。所有虚假值也是如此,我们需要明确地验证这些值。
除非 value 是一个数组。 truthy 的解释可能具有误导性。在这种情况下,我们应该检查 value.length != 0 是否有一个非空数组。
只是想补充一点,如果您觉得 if 结构在语法上过于繁重,您可以使用三元运算符,例如:var result = undefined ? "truthy" : "falsy"。或者,如果您只想强制转换为布尔值,请使用 !! 运算符,例如 !!1 // true、!!null // false。
另请注意,这不会检查仅包含空格字符的字符串。
答2:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
检查值是否未定义或为空的详细方法是:
return value === undefined || value === null;
您也可以使用 == 运算符,但这需要一个 know all the rules:
return value == null; // also returns true if value is undefined
可以像这样只检查 null 或 undefined:if (value == null)。注意强制的 == 运算符。如果您像 if (value === null || value === undefined) 一样检查,您忘记/不知道 Javascript 是如何强制转换的。 webreflection.blogspot.nl/2010/10/…
@ChristiaanWesterbeek:您的观点是 arg == null 产生与 arg === undefined || arg === null 相同的结果。但是,我认为后一个示例更具可读性。
arg == null 在我的经验中很常见。
遗憾的是,return value === (void 0) 比针对可能是范围内合法变量的 undefined 进行测试更安全。
@Sharky 未定义的变量和未声明的变量之间存在差异:lucybain.com/blog/2014/null-undefined-undeclared
答3:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
function isEmpty(value){return (value == null || value.length === 0);
}
这将返回 true
undefined // Because undefined == nullnull[]""
和零参数函数,因为函数的 length 是它采用的声明参数的数量。
要禁止后一类,您可能只想检查空白字符串
function isEmpty(value){return (value == null || value === '');
}
undefined == null 但undefined !== null
@IanBoyd 那是因为您将 == 与 === 进行比较。这意味着 undefined == null (true) undefined != null (false) undefined === null (false) undefined !== null(true) 最好提供更多信息以便帮助和推动人们在正确的方向。关于差异的 moz 文档 developer.mozilla.org/en-US/docs/Web/JavaScript/…
答4:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
这是最安全的检查,我还没有看到它像这样张贴在这里:
if (typeof value !== 'undefined' && value) {//deal with value'
};
它将涵盖从未定义价值的情况,以及以下任何一种情况:
无效的
未定义(未定义的值与从未定义的参数不同)
0
“”(空字符串)
错误的
钠
已编辑:更改为严格相等(!==),因为这是现在的规范;)
我没有投反对票,但是关于严格相等比较,一般规则是除非您需要隐式类型转换,否则应该使用严格比较。
感谢您的评论史蒂夫。这条一般规则很好。我只是希望人们能够理解他们为什么使用其中一种。你看起来的每一种方式都会很高兴向你宣扬“总是使用严格”——就像它是 Javascript 中最重要的东西一样。我见过太多像 if(val !== null) 这样的案例,这显然会导致不想要的结果。有疑问时可以说 - 使用严格,但最好不要有疑问。
我认为这里的重点是我们希望 typeof 运算符返回一个字符串,因此使用严格相等检查在技术上更准确、更具体、更快。所以真的,没有理由使用松散的比较,而不是相反。 val !== null 在许多情况下也完全有效——我一直都这样做。我同意你的不合格论点,但我认为这是一个糟糕的例子。不是想骗你。
@guya 这值得为 7 年后的编辑投票!尤其是考虑到当天的上述讨论;) 尊敬的先生!
我认为这是最易读的代码。在所有答案中,这应该是公认的答案。
答5:
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
您可能会发现以下功能很有用:
function typeOf(obj) {return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}
或者在 ES7 中(如果有进一步改进,请评论)
function typeOf(obj) {const { toString } = Object.prototype;const stringified = obj::toString();const type = stringified.split(' ')[1].slice(0, -1);return type.toLowerCase();
}
结果:
typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date
typeOf(new WeakMap()) //weakmap
typeOf(new Map()) //map
“请注意,绑定运算符 (:
是否有标准函数来检查 JavaScript 中的 null、未定义或空白变量?相关推荐
- 是否有标准函数检查JavaScript中的null,undefined或空白变量?
是否有通用的JavaScript函数可检查变量是否具有值并确保其undefined或为null ? 我有以下代码,但是不确定是否能涵盖所有情况: function isEmpty(val){retur ...
- 疑难杂症篇(二)--MATLAB中“未定义函数或变量 ‘bd_asymp‘”问题的解决方案
使用MATLAB绘制开环对数幅频渐近特性曲线过程中,出现"未定义函数或变量 'bd_asymp'"的问题,下面给出一个参考的解决方案. 展示出现的问题 问题的解决方案 a.在命令行 ...
- 检查JavaScript中变量是数字还是字符串
有谁知道如何检查JavaScript中的变量是数字还是字符串? #1楼 如果要处理文字符号而不是构造函数,则可以使用typeof:. typeof "Hello World"; / ...
- JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 参考文章: (1)JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 (2)https://ww ...
- MATLAB中未定义函数或变量”的问题
MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件. 脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运 ...
- matlab中出现未定义函数或变量如何解决?
A=[0 -1 4;9 -14 25;-34 49 64]; B=zeros(3,3); for i=1:3 for j=1:3 B(i,j)=A(i,j); end end disp(B) 复制j矩 ...
- 关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法
MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件. 脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运 ...
- 如何检查JavaScript中的数字是否为NaN?
我只是在Firefox的JavaScript控制台中尝试过,但是以下任何一条都不返回true: parseFloat('geoff') == NaN;parseFloat('geoff') == Nu ...
- 如何检查 JavaScript 中的“未定义”? [复制]
问: 这个问题在这里已经有了答案:Detecting an undefined object property (50 answers) How to check a not-defined vari ...
最新文章
- Java中的访问权限
- wdcp3.2.6版 https全站跳转 标记待细化
- 通过RMAN克隆11g数据库(基于active database)
- openssh windows_WINDOWS环境配置SSH服务
- iptables一次性封多个ip,使用ipset 工具
- Korney Korneevich and XOR(CF750F1/F2)
- JXL生成Excel,并提供下载(2:提供下载)
- 转:【HTTP】常见错误码说明
- python多线程运用
- [Linux日记]解决Ubuntu升级出现/boot空间不足问题
- 《Java 8实战》读书笔记
- ue4设置组合键_UE4快捷键
- 一文带你详尽剖析Miracast投屏开发和调试
- 反转链表 c++实现
- 方正中间件创业大赛南京赛区圆满落幕
- 为什么用企业微信做运营
- springboot+thymeleaf访问绝对路径图片、springboot配置虚拟路径
- C语言循环输出能被3整除的数
- cisco3560及二层交换机配置vlan及常用命令
- 一个连接态DRX下的paging接收专利
热门文章
- Kinect坐标转换
- 【CXY】JAVA应用 之 排序
- 智慧非智能,智慧园区智慧在哪里?
- 苹果新款笔记本_微软承诺将在iPhone上提供流媒体游戏服务(全文)_苹果 新款MacBook Pro 13英寸_笔记本新闻...
- alert angularjs
- 燕山大学计算机历年拟录取分数线,燕山大学录取分数线2021是多少分(附历年录取分数线)...
- 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB
- failed to push some refs to 'git@github.com怎么办
- 貌似高大上,实则黑中介
- 有一页式系统,其页表存放在内存中. (1)如果对内存的一次存取需要1.5微秒,问实现一次页面访问的存取时间是多少? (2)如果系统增加有快表,平均命中率为85%,.....