if (reValue== undefined){
alert("undefined");
}
发现判断不出来,最后查了下资料要用typeof
方法:
if (typeof(reValue) == "undefined") {
alert("undefined");
}
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
null和undefined的区别
这两个空值的区别也是容易混淆的。
undefined和null对象无非是两个特殊对象,undefined表示无效对象,null表示空对象。如果变量显式或者隐式(由Javascript引擎进行赋值)地被赋予了undefined,那么代表了此变量未被定义,如果被赋予null值,则代表此变量被初始化为空值。
在Javascript中,变量是通过var声明,=赋值符进行定义(初始化变量所指向的对象)。当然,如果声明一个全局变量(作为window属性)可以不使用var关键字。变量可以在声明的同时进行定义。
<script type="text/javascript">
var undefinedVariable,nullVariable = null;
alert(undefinedVariable); // "undefined"
alert(window.undefinedVariable); // "undefined"
alert(window.abcd); // "undefined"
alert(nullVariable); // "null"
alert(abcd); // throw exception "abcd is not defined"
</script>
其实,变量如果声明了但是没有初始化,那么Javascript引擎会将此变量自动指向undefined对象。
这里需要注意,我们在上面引用window.abcd时,弹出的是undefined;而直接引用abcd变量时,却抛出了一个异常。这是由于Javascript引擎对于没有显式指定对象链的变量,会尝试从最近的作用域开始查找变量,查找失败,则退到父级作用链进行查找。如果均查找失败,则抛出“变量未定义”的异常。
这两个值在进行数字运算的时候也有不同。
<script type="text/javascript">
alert(1+undefined); // "NaN"
alert(1+null); // "1"
</script>
从null和undefined的意义上来说,这是很好理解的。