标签: undefined

如何在JavaScript中检查未定义或null变量?

我们经常在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 null undefined

480
推荐指数
12
解决办法
58万
查看次数

如何检查JavaScript中是否定义了变量?

如何检查是否以跨浏览器的方式定义了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 dom undefined

460
推荐指数
0
解决办法
26万
查看次数

我可以将变量设置为undefined或将undefined作为参数传递吗?

我对JavaScript undefinednull价值观有点困惑.

什么是if (!testvar)真正做到?它测试undefinednull或只undefined

一旦定义了变量,我可以将其清除undefined(因此删除变量)吗?

我可以undefined作为参数传递吗?例如:

function test(var1, var2, var3) {

}

test("value1", undefined, "value2");
Run Code Online (Sandbox Code Playgroud)

javascript undefined

296
推荐指数
6
解决办法
24万
查看次数

检查JavaScript中是否存在对象

如何在JavaScript中验证对象的存在?

以下作品:

if (!null)
   alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

if (!maybeObject)
   alert("GOT HERE");
Run Code Online (Sandbox Code Playgroud)

错误:

maybeObject 没有定义.

javascript variables debugging null undefined

296
推荐指数
9
解决办法
49万
查看次数

变量=== undefined vs. typeof variable ==="undefined"

jQuery的核心风格指南建议两种不同的方法来检查一个变量是否被定义.

  • 全局变量: typeof variable === "undefined"
  • 局部变量: variable === undefined
  • 属性: object.prop === undefined

为什么jQuery对全局变量使用一种方法而对本地和属性使用另一种方法?

javascript jquery undefined

289
推荐指数
5
解决办法
8万
查看次数

测试JavaScript中是否未定义某些内容

我正在检查if(response[0].title !== undefined),但是我得到了错误:

未捕获的TypeError:无法读取未定义的属性"title".

javascript undefined

221
推荐指数
5
解决办法
28万
查看次数

201
推荐指数
6
解决办法
6万
查看次数

如何在jQuery中检查'undefined'值

可能重复:
在JavaScript中检测未定义的对象属性
javascript undefined比较

我们如何为未定义的变量添加检查,例如:

function A(val) {
  if (val == undefined) 
    // do this
  else
    // do this
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery undefined

164
推荐指数
5
解决办法
46万
查看次数

如果未定义,javascript设置变量

我知道我可以测试一个javascript变量然后定义它,如果它是未定义的,但是没有一些方法可以说

var setVariable = localStorage.getItem('value') || 0;

似乎是一种更清晰的方式,我很确定我已经在其他语言中看到过这种情况.

javascript undefined

159
推荐指数
7
解决办法
18万
查看次数

JavaScript null检查

我遇到过以下代码:

function test(data) {
    if (data != null && data !== undefined) {
        // some code here
    }
}
Run Code Online (Sandbox Code Playgroud)

我对JavaScript很新,但是,从我在这里读过的其他问题来看,我的印象是这段代码没有多大意义.


特别是,这个答案说明了这一点

如果在除了以外的任何上下文中访问未定义的变量,您将收到错误typeof.

更新:上述答案(引用)可能会产生误导.应该说"一个未声明的变量",而不是"一个未定义的变量".

正如我在Ryan♦,maericsnwellnhof的回答中所发现的那样,即使没有为函数提供参数,也始终声明其参数的变量.这个事实也证明了下面列表中的第一项是错误的.


根据我的理解,可能会遇到以下情况:

  • 调用该函数时没有参数,从而生成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)

javascript null undefined null-check

158
推荐指数
4
解决办法
42万
查看次数