【问题标题】:How to check for undefined type in javascript [duplicate]如何在javascript中检查未定义的类型[重复]
【发布时间】:2012-10-10 01:00:08
【问题描述】:

可能重复:
Is there a standard function to check for null, undefined, or blank variables in JavaScript?

在javascript中检查undefined类型的最佳方法是什么。我知道一种检查未定义类型的方法,即typeOf。但是我必须检查很多地方,所以如果有任何简短且更好的检查方法,请告诉我?

我尝试了几种方法,但没有成功:

    alert(undefined === "undefined");
    alert(undefined || "defined"); 

【问题讨论】:

  • 将原版typeof foo === "undefined" 放入isDefined(value, [default]) 函数中
  • 你已经知道最好的方法了。

标签: javascript jquery


【解决方案1】:

使用typeof val == "undefined" 是最好的方法,因为undefined 的值可以修改。

var x;

console.log("x == undefined => " + (x == undefined));
console.log("typeof x == 'undefined' => " + (typeof x == 'undefined'));

var undefined = 10; // for some reason, browsers allow this!
console.log('undefined overwritten to ' + undefined);

console.log("x == undefined => " + (x == undefined)); // this will return false!
console.log("typeof x == 'undefined' => " + (typeof x == 'undefined'));

【讨论】:

  • 在 ES5 中,全局对象的 undefined 属性是只读的,因此不能将其值设置为其他任何值。
【解决方案2】:
var variable2 = variable1  || '';

如果变量 1 未定义,则将其设置为 '',否则将使用变量 1。

【讨论】:

  • 更准确地说“如果 Variable1 是 falsey ...”
【解决方案3】:

这是你所说的使用 typeof 的最佳方式。

例子:

alert(typeof variable === 'undefined')

【讨论】:

  • typeof 总是返回字符串,所以=== 没有特殊需要。
  • 是的,没有特殊需要,但我可以放心。我想严格比较字符串,不再转换,我知道typeof返回字符串。
  • @VisioN ===== 稍微快一点,所以它实际上是首选。
  • @JanDvorak 我创建了一个jsperf 进行检查。每次新的测试运行(Chrome 22)我的结果都不同。
  • @jbabey——考虑到 javascript 的松散类型,== 非常方便,例如1 == '1'。想象一下,在进行比较之前必须将所有内容都转换为相同的类型(这或多或少是== 所做的)。我更喜欢只在必要时使用===,而在其他任何地方使用==
【解决方案4】:

对你来说没有什么新鲜事:

// either
(val === undefined)
// or
(typeof val == "undefined")

使用val || "defined"的问题是,如果valnullundefined0false"",则会返回“已定义”。

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 2015-03-02
    • 2021-05-09
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多