我对JavaScript的undefined和null值有点困惑。
if (!testvar)实际上做什么?它是否测试为undefined和null或只是undefined?
一旦一个变量被定义,我可以把它清除回未定义(因此删除变量)?
我可以传递undefined作为参数吗?例如:
function test(var1, var2, var3) {
}
test("value1", undefined, "value2");
我对JavaScript的undefined和null值有点困惑。
if (!testvar)实际上做什么?它是否测试为undefined和null或只是undefined?
一旦一个变量被定义,我可以把它清除回未定义(因此删除变量)?
我可以传递undefined作为参数吗?例如:
function test(var1, var2, var3) {
}
test("value1", undefined, "value2");
当前回答
检查空值的最佳方法是
if ( testVar !== null )
{
// do action here
}
对于undefined
if ( testVar !== undefined )
{
// do action here
}
你可以用undefined来赋值一个变量。
testVar = undefined;
//typeof(testVar) will be equal to undefined.
其他回答
检查空值的最佳方法是
if ( testVar !== null )
{
// do action here
}
对于undefined
if ( testVar !== undefined )
{
// do action here
}
你可以用undefined来赋值一个变量。
testVar = undefined;
//typeof(testVar) will be equal to undefined.
要回答您的第一个问题,not操作符(!)将强制将给定的值转换为布尔值。因此null, 0, false, NaN和“”(空字符串)都将显示为false。
试试这个:
// found on UglifyJS
variable = void 0;
你不能(不应该?)将任何东西定义为未定义的,因为变量将不再是未定义的——你只是将它定义为某个东西。
不能(不应该?)将undefined传递给函数。如果你想传递一个空值,使用null代替。
语句if(!testvar)检查布尔值为true/false,这个语句测试testvar的结果是否为false。根据定义,null和undefined既不应该被赋值为true也不应该被赋值为false,但是JavaScript将null赋值为false,如果您尝试求值一个undefined变量,则会给出一个错误。
要正确地测试undefined或null,请使用以下命令:
if(typeof(testvar) === "undefined") { ... }
if(testvar === null) { ... }
是的,你可以,因为未定义定义为未定义。
console.log(
/*global.*/undefined === window['undefined'] &&
/*global.*/undefined === (function(){})() &&
window['undefined'] === (function(){})()
) //true
你的情况:
test("value1", undefined, "value2")
你也可以创建自己的未定义变量:
Object.defineProperty(this, 'u', {value : undefined});
console.log(u); //undefined