问:

是否有一个通用的 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、未定义或空白变量?相关推荐

  1. 是否有标准函数检查JavaScript中的null,undefined或空白变量?

    是否有通用的JavaScript函数可检查变量是否具有值并确保其undefined或为null ? 我有以下代码,但是不确定是否能涵盖所有情况: function isEmpty(val){retur ...

  2. 疑难杂症篇(二)--MATLAB中“未定义函数或变量 ‘bd_asymp‘”问题的解决方案

    使用MATLAB绘制开环对数幅频渐近特性曲线过程中,出现"未定义函数或变量 'bd_asymp'"的问题,下面给出一个参考的解决方案. 展示出现的问题 问题的解决方案 a.在命令行 ...

  3. 检查JavaScript中变量是数字还是字符串

    有谁知道如何检查JavaScript中的变量是数字还是字符串? #1楼 如果要处理文字符号而不是构造函数,则可以使用typeof:. typeof "Hello World"; / ...

  4. JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案

    JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 参考文章: (1)JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案 (2)https://ww ...

  5. MATLAB中未定义函数或变量”的问题

    MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件. 脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运 ...

  6. 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矩 ...

  7. 关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法

    MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件. 脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运 ...

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

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

  9. 如何检查 JavaScript 中的“未定义”? [复制]

    问: 这个问题在这里已经有了答案:Detecting an undefined object property (50 answers) How to check a not-defined vari ...

最新文章

  1. Java中的访问权限
  2. wdcp3.2.6版 https全站跳转 标记待细化
  3. 通过RMAN克隆11g数据库(基于active database)
  4. openssh windows_WINDOWS环境配置SSH服务
  5. iptables一次性封多个ip,使用ipset 工具
  6. Korney Korneevich and XOR(CF750F1/F2)
  7. JXL生成Excel,并提供下载(2:提供下载)
  8. 转:【HTTP】常见错误码说明
  9. python多线程运用
  10. [Linux日记]解决Ubuntu升级出现/boot空间不足问题
  11. 《Java 8实战》读书笔记
  12. ue4设置组合键_UE4快捷键
  13. 一文带你详尽剖析Miracast投屏开发和调试
  14. 反转链表 c++实现
  15. 方正中间件创业大赛南京赛区圆满落幕
  16. 为什么用企业微信做运营
  17. springboot+thymeleaf访问绝对路径图片、springboot配置虚拟路径
  18. C语言循环输出能被3整除的数
  19. cisco3560及二层交换机配置vlan及常用命令
  20. 一个连接态DRX下的paging接收专利

热门文章

  1. Kinect坐标转换
  2. 【CXY】JAVA应用 之 排序
  3. 智慧非智能,智慧园区智慧在哪里?
  4. 苹果新款笔记本_微软承诺将在iPhone上提供流媒体游戏服务(全文)_苹果 新款MacBook Pro 13英寸_笔记本新闻...
  5. alert angularjs
  6. 燕山大学计算机历年拟录取分数线,燕山大学录取分数线2021是多少分(附历年录取分数线)...
  7. 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB
  8. failed to push some refs to 'git@github.com怎么办
  9. 貌似高大上,实则黑中介
  10. 有一页式系统,其页表存放在内存中. (1)如果对内存的一次存取需要1.5微秒,问实现一次页面访问的存取时间是多少? (2)如果系统增加有快表,平均命中率为85%,.....