【发布时间】:2009-08-17 04:37:05
【问题描述】:
使用 Javascript,是否有与 VBScript 的 IsEmpty 函数等价的功能或功能? VBScript 函数返回给定变量是否为“空”,例如因为所有变量实际上都是 VARIANT,无论 VARIANT 的 vt 是否为 VT_EMPTY,而我为 Javascript 找到的大部分内容都是特定于字符串的或不可泛化的。
【问题讨论】:
标签: javascript vbscript
使用 Javascript,是否有与 VBScript 的 IsEmpty 函数等价的功能或功能? VBScript 函数返回给定变量是否为“空”,例如因为所有变量实际上都是 VARIANT,无论 VARIANT 的 vt 是否为 VT_EMPTY,而我为 Javascript 找到的大部分内容都是特定于字符串的或不可泛化的。
【问题讨论】:
标签: javascript vbscript
JavaScript 有许多不同的值可以被认为是“空”,并且有许多不同的方法来测试是否为空。
第一件事是空的:
undefined:尚未分配的值。如果你创建了一个变量但没有给它分配任何东西,这就是它所包含的内容。
null:这是一个对象值,可以分配给任何var。
接下来如何测试它们。 JavaScript 是松散类型的,有很多隐式类型转换。这意味着当两个值的类型不同时,标准的等于运算符== 会执行类型强制转换。三等号运算符不执行类型强制,这使其成为针对非常具体的值进行测试的最佳运算符。
您可以测试返回可以测试的字符串的值的类型(注意三等号运算符):
if ("undefined" === typeof myFoo) { /* this would be considered empty */ }
您可以针对关键字undefined 进行测试(注意三等号运算符):
if (undefined === myFoo) { /* this would be considered empty */ }
您可以针对关键字null 进行测试(注意三等号运算符):
if (null === myFoo) { /* this would be considered empty */ }
您可以针对空字符串 "" 进行测试(注意三等号运算符):
if ("" === myFoo) { /* this would be the empty string */ }
如果您期望的值通常不会被强制转换为布尔值 false,那么您可以通过直接在 if 语句中测试它来测试它的存在:
if (!myFoo) {
/* this would be any falsy value, including false, null, 0, undefined */
} else {
/* this would be any truthy value, including objects,
numbers other than zero, Dates, etc. */
}
大多数情况下,如果您期待某些“真实”的东西,您可以直接对其进行测试,它将被强制转换为布尔值。简而言之,您可能可以将其定义为:
function isEmpty(value) {
return !value;
}
但通常更有意义的是在对象之前放置一个! 或!! 以获得它的值。如果您期望 false 或 0(零)作为有效值,请小心。在这些情况下,最好测试typeof 对象并做出相应的选择。
【讨论】:
不知道是不是应该这样
typeof variable == "undefined"
【讨论】:
function IsEmpty( theValue )
{
if ( theValue === undefined )
{
return true;
}
return false;
}
【讨论】:
函数 isEmpty(值){ 返回值 == 空 ||值 === ""; }
【讨论】:
没有。
您必须始终针对“null”、未定义和“”来测试您的变量。 (无聊)
【讨论】: