javascript - 如何检查变量是否“未定义”(不仅仅是“未定义”)
问题描述
我想检查一个变量是否是not defined
,不包括分配给的变量undefined
,没有try/catch
。
我知道typeof variable
,但这不符合我想要的。
例如 :
let a;
console.log(typeof a === typeof b); // outputs true
console.log(a); // outputs 'undefined'
console.log(b); // throws error 'b is not defined'
我想要的是能够分辨未定义变量和值为 的变量之间的区别undefined
,而不必使用try/catch
.
我的用例(来自评论)是:
我想看看省略的参数和设置为未定义的参数在函数调用中的区别。而且一般来说,如果可能的话
解决方案
一种可能性是使用 window.hasOwnProperty("var"),如下所示:
不知道这是否适用于所有情况...
您还可以尝试使用“this”关键字而不是“window”来将“hasOwnProperty”函数集中在当前范围上。
var a;
console.log("Is a declared? "+window.hasOwnProperty("a"));
console.log("type of a: "+typeof(a));
console.log("Is b declared? "+window.hasOwnProperty("b"));
console.log("type of b: "+typeof(b));
推荐阅读
- wordpress - ACF 自定义字段未显示在自定义分类模板上
- azure - 使用表格模型的 Power BI 中的行级别安全错误
- git - 如何将所有分支的存储库从 Bitbucket 复制到 CodeCommit 但没有历史记录?
- api - 应该在哪里验证用户输入:GUI 和/或 API?
- java - 使用 application.yml 中的属性从 spring data mongodb 中注入 @Document 中的集合名称
- c# - LINQ C#,相同字段的总和列
- c# - EF Core“在前一个操作完成之前在此上下文上启动了第二个操作”仅在部署时
- jenkins - 如何将 Jenkins UI 转换为 Jenkins DSL?
- jquery - 删除表中除一行之外的所有行,同时保留表头
- java - 我可以在 List 的流中链接空检查吗