我经常看到JavaScript代码以这种方式检查未定义的参数等:
if (typeof input !== "undefined") {
// do stuff
}
这似乎有点浪费,因为它涉及类型查找和字符串比较,更不用说它的冗长了。这是必需的,因为undefined
可以重命名。
我的问题是:
与该方法相比,该代码有何优势:
if (null != input) {
// do stuff
}
据我所知,您无法重新定义null
,因此不会意外中断。并且,由于!=
运算符的类型强制,这将同时检查undefined
和null
…,这通常正是您想要的(例如,用于可选功能参数)。
但是,这种形式似乎并不广泛,甚至会导致JSLint对使用邪恶!=
运算符的人大吼大叫。
为什么认为这种风格不好?
typeof
更安全,因为它允许从未声明过标识符:
if(typeof neverDeclared === "undefined") // no errors
if(neverDeclared === null) // throws ReferenceError: neverDeclared is not defined
问题内容: 在jQuery的核心风格指南建议两种不同的方法来检查一个变量是否被定义。 全局变量: 局部变量: 特性: 为什么jQuery为什么对全局变量使用一种方法而对局部变量和属性使用另一种方法? 问题答案: 对于未声明的变量,将返回字符串文字,而身份检查将触发错误 “未定义foo” 。 对于局部变量(您 知道 已在某处声明),不会发生此类错误,因此进行身份检查。
问题内容: 注意:根据 ECMAScript5.1,第15.1.1.3节,window.undefined是只读的。 现代浏览器正确地实现了这一点。 例如:Safari 5.1,Firefox 7,Chrome 20等。 Undefined仍可在以下位置更改:Chrome 14,… 原来,问题的原因是 如果“对象”中没有属性“ x”,则返回false。 我通过在两个Facebook函数中用规则相等
typeof 操作符返回一个字符串,表示未经计算的操作数的类型。(MDN) typeof 可以用来检测一个值的类型。 1. 表现 在 ES6 之前,typeof 在浏览器的表现是这样的: 类型 结果 Boolean “boolean” String “string” Number “Number” Function “function” undefined “undefined” null “ob
问题内容: 我正在使用PHP版本5.3并尝试在我的代码中使用,但是出现错误: 我仍然可以连接到数据库。为什么不可用? 我正在使用PHP版本5.3。 问题答案: 更新 中提到的评论,一直以来5.5弃用: 自PHP 5.5起不推荐使用mysql扩展。应该改用mysqli或PDO扩展名。否决已在mysql_deprecation中确定,可以在此找到对该决定背后原因的讨论。 并 在PHP 7中删除 。 是
问题内容: 我有一个简单的jquery click事件 以及在site.master中定义的jquery引用 我检查了脚本是否已正确解析,可以在Firebug中查看标记并直接查看脚本,因此必须找到我。但是,我仍然得到: $未定义 而且没有一个jQuery的作品。我还尝试了$(document).ready和jQuery等的各种变体。 这是.net 3.5上的MVC 2应用程序,我确定我真的很密集,
问题内容: 我收到此错误消息, 这是我的标题。 以下是我的JavaScript代码 以下是HTML 我想在输入标签上显示日期选择器。 我正在使用Bootstrap V3.1。 问题答案: 在使用$或jQuery的脚本之前 添加jQuery库 , 以便可以在脚本中标识$。