0

我知道检查变量是否未定义的最佳方法是

if ( typeof( something ) == "undefined") 

我不明白的是什么时候是未定义的变量,什么时候是未定义的对象。例如,当我 console.log() 得到一个变量时

Object {detailedView: undefined}

我的问题是为什么我得到这个而不是一个普通的未定义。

4

3 回答 3

2

a不是未定义的。它被定义了。它是一个对象。该对象恰好包含一个属性,即undefined,但变量本身不是未定义的。

something没有定义,所以它是undefined.

于 2013-06-21T18:24:13.120 回答
1

这里有两件事:“值” undefined,这是一个变量可以指向的值,当它被声明但尚未分配任何东西时(即var a;),或者当它被分配了实际上没有值的东西时,或者存在,并且有字符串"undefined",这是一个类似于“monkey”或“collywobble”的字符串。

在您的条件中,您正在测试以查看typeof运算符的结果是什么,它是一个字符串“对象”或“函数”,或者在这种情况下是“未定义”。这些只是词:

if(typeof a == "undefined")

和测试一样

if(a == undefined)

因此,当您 console.log 实际对象时,您会看到它有一个 value undefined,而不是一个 string "undefined"

于 2013-06-21T18:28:19.513 回答
1

我相信您是在询问“未定义的变量”(从未声明的变量)和“未定义的值”(undefined变量或属性中的值)之间的区别。

var您使用关键字定义/声明一个变量:

var myVariable;

如果你这样做,该变量的值是undefined

console.log(myVariable); // undefined

如果你声明一个变量,你就不能使用它:

console.log(myOtherVariable); // throws a ReferenceError

...除了typeof

typeof myOtherVariable == "undefined"; // true
于 2013-06-21T18:43:17.890 回答