JavaScript确定是否不相等的正确方法,特别是在typeof的情况下
javascript proper way to determine if not equal particularly in the case of typeof
可能的重复项:
JavaScript 未定义比较
这总是让我感到困惑,我永远找不到明确的答案,当我尝试其中一种或另一种时,它似乎也没有最终向我表明一种或另一种方式比另一种方式有效或效果更好。
我看到人们这样做:
typeof system_obj.alpha !== 'undefined'
!typeof system_obj.alpha == 'undefined'
typeof system_obj.alpha != 'undefined'
但在任何情况下,我总是不时地出现误报。所以我的问题是,当我想知道字符串是否不为 null 或未定义时,或者如果我想检查 of 的类型不是某种东西,然后基于此做一些事情,我总是以类似的东西结束
if(typeof system_obj.alpha == 'undefined'){/*ignore*/}else
{
//code
}
我如何正确地做到这一点,而不必像我最终所做的那样使用 if-else 逻辑
使用system_obj.alpha === void 0
这是检查变量是否未定义的最快方法,并且它是可靠的。这是比较。
http://jsperf.com/typeof-vs-undefined-check/3
只需执行以下操作:
if (typeof systemObj !== 'undefined') {
... do something
}
要测试对象是否真实(而不是未定义、null、false 等),请执行以下操作:
if (systemObj) {
... do something (will throw error is object does not exist)
}
您的示例在上面显示的方式可以执行以下操作:
if (systemObj.hasOwnProperty('alpha') && systemObj.alpha) {
... do something
}
这将检查以确保 alpha 存在并且不是假的。
在问题范围之外,我建议以下几点:
使用骆驼盒。
不要以这种方式编写 if 语句。
查看 http://addyosmani.com/blog/或类似的资源,了解如何编写更好的 JavaScript。
相关文章:
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- 从网站(特别是Trello.com)获取JSON文件
- 使javascript警报/确认对话框更加可见(特别是在Google Chrome浏览器中)
- 特别是将javascript添加到类中,而不是添加到另一个类中
- Piwik自定义插件开发/JQPlot(特别是:Piwik 1.7.1中的seriesPicker)
- 多文件上传,支持所有浏览器,特别是ie7,ie8和ie9
- 如何从浏览器中删除Skype呼叫工具?特别是Chrome
- 编译用于调试的私有api——特别是_enableRemoteInspector
- 如何模拟AngularJS中的构造函数(特别是Date()构造函数)
- 究竟如何getElementsByClassName工作在Chrome?,特别是w.r.t. NodeLists &;延
- 如何轻松运行本地内容(javascript, Flash),特别是在IE11中
- 如何抑制退格时,日期字段日历是活跃的extjs 4,特别是在IE中
- 在包含相对".js"后缀的npm包中使用aurelia-cli需要导入(特别是autobahn)
- Node.js有哪些调试选项?特别是在Visual Studio Code中
- HTML5视频显示时间在Javascript -特别是秒
- AJAX构建和部署环境,特别是javascript和css min,完整版本
- 如何从HTML表中提取数据,特别是<td id=“;单词“>,使用JavaScript
- 将String转换为方法参数,特别是在console.log中
- Vue.js:从DOM中拉入数据——特别是form action属性
- JavaScript确定是否不相等的正确方法,特别是在typeof的情况下