我们经常在JavaScript代码中使用以下代码模式
if (typeof(some_variable) != 'undefined' && some_variable != null)
{
// Do something with some_variable
}
Run Code Online (Sandbox Code Playgroud)
是否有一种不那么冗长的检查方式具有相同的效果?
根据一些论坛和文献说,以下应该具有相同的效果.
if (some_variable)
{
// Do something with some_variable
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当未定义时,Firebug将这样的语句评估为运行时错误some_variable,而第一个语句就好了.这只是Firebug的一个(不需要的)行为,还是这两种方式之间确实存在一些差异?
如何检查是否以跨浏览器的方式定义了JavaScript变量?
在使用FireBug日志记录编写一些JavaScript时遇到了这个问题.我写了一些代码如下:
function profileRun(f) {
// f: functions to be profiled
console.profile(f.constructor);
f();
console.profileEnd(f.constructor);
}
Run Code Online (Sandbox Code Playgroud)
它在FireFox/FireBug中工作正常,但它在IE8 RC1中报告错误.所以,我想检查执行环境中是否存在控制台变量.
下面的代码在FireFox中工作正常,但在IE8 RC1中没有.
function profileRun(f) {
if (console != undefined) {
console.profile(f.constructor);
}
f();
if (console != undefined) {
console.profileEnd(f.constructor);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做的话.它适用于IE8 RC1.为什么?
function profileRun(f) {
if (window.console != undefined) {
console.profile(f.constructor);
}
f();
if (window.console != undefined) {
console.profileEnd(f.constructor);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何跨浏览器的方式来检查它?
我对JavaScript undefined和null价值观有点困惑.
什么是if (!testvar)真正做到?它测试undefined和null或只undefined?
一旦定义了变量,我可以将其清除undefined(因此删除变量)吗?
我可以undefined作为参数传递吗?例如:
function test(var1, var2, var3) {
}
test("value1", undefined, "value2");
Run Code Online (Sandbox Code Playgroud) 如何在JavaScript中验证对象的存在?
以下作品:
if (!null)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
if (!maybeObject)
alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)
错误:
maybeObject没有定义.
在jQuery的核心风格指南建议两种不同的方法来检查一个变量是否被定义.
typeof variable === "undefined"variable === undefinedobject.prop === undefined为什么jQuery对全局变量使用一种方法而对本地和属性使用另一种方法?
我正在检查if(response[0].title !== undefined),但是我得到了错误:
未捕获的TypeError:无法读取未定义的属性"title".
我们如何为未定义的变量添加检查,例如:
function A(val) {
if (val == undefined)
// do this
else
// do this
}
Run Code Online (Sandbox Code Playgroud) 我知道我可以测试一个javascript变量然后定义它,如果它是未定义的,但是没有一些方法可以说
var setVariable = localStorage.getItem('value') || 0;
似乎是一种更清晰的方式,我很确定我已经在其他语言中看到过这种情况.
我遇到过以下代码:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Run Code Online (Sandbox Code Playgroud)
我对JavaScript很新,但是,从我在这里读过的其他问题来看,我的印象是这段代码没有多大意义.
如果在除了以外的任何上下文中访问未定义的变量,您将收到错误typeof.
更新:上述答案(引用)可能会产生误导.应该说"一个未声明的变量",而不是"一个未定义的变量".
正如我在Ryan♦,maerics和nwellnhof的回答中所发现的那样,即使没有为函数提供参数,也始终声明其参数的变量.这个事实也证明了下面列表中的第一项是错误的.
根据我的理解,可能会遇到以下情况:
调用该函数时没有参数,从而生成data一个未定义的变量,并引发错误data != null.
该函数专门用null(或undefined)作为其参数调用,在这种情况下data != null已经保护内部代码,使得&& data !== undefined无用.
该函数使用非null参数调用,在这种情况下,它将平凡地传递两个data != null 和 data !== undefined.
问:我的理解是否正确?
我在Firefox的控制台中尝试了以下内容:
--
[15:31:31.057] false != null
[15:31:31.061] true
-- …Run Code Online (Sandbox Code Playgroud) undefined ×10
javascript ×9
null ×3
jquery ×2
c++ ×1
c++-faq ×1
debugging ×1
dom ×1
null-check ×1
variables ×1