VBScript的IsEmpty在JavaScript中是否具有同等效力?

dla*_*nod 1 javascript vbscript

使用Javascript,是否有相同的功能或功能,所以VBScript的IsEmpty功能?VBScript函数返回给定变量是否为"空",例如,因为所有变量实际上都是VARIANT,无论VARIANT是否具有vt的VT_EMPTY,而我发现的大多数Javascript都是字符串特定的或不可推广的.

mck*_*mey 5

JavaScript有许多不同的值,可以被认为是"空"和许多不同的方法来测试空.

首先是空的:

  1. undefined:尚未分配的值.如果您创建一个变量但不为其分配任何内容,则它将包含它.

  2. null:这是一个可以分配给任何对象的对象值var.

接下来如何测试它们.JavaScript松散地输入了很多隐式类型转换.这意味着当两个值具有不同类型时,标准equals运算符==执行类型coersion.三重等于操作者执行类型coersion这使得用于测试的最好的运营商针对非常具体的值.

  1. 你可以测试一个值的类型,它返回一个可以测试的字符串(注意三重等于运算符):

    if ("undefined" === typeof myFoo) { /* this would be considered empty */ }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你可以测试关键字undefined(注意三重等于运算符):

    if (undefined === myFoo) { /* this would be considered empty */ }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 你可以测试关键字null(注意三重等于运算符):

    if (null === myFoo) { /* this would be considered empty */ }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 你可以测试空字符串""(注意三重等于运算符):

    if ("" === myFoo) { /* this would be the empty string */ }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果你期望一个通常不会被强制转换为布尔值的值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. */
    }
    
    Run Code Online (Sandbox Code Playgroud)

大多数情况下,如果你期望某些东西"真实",你可以直接测试它,它将被强制转换为布尔值.简而言之,您可能会将其定义为:

function isEmpty(value) {
    return !value;
}
Run Code Online (Sandbox Code Playgroud)

但是,只要在对象之前!!!之前放置它的值就更有意义了.如果您期望false0(零)作为有效值,请小心.在这些情况下,最好测试typeof对象并做出相应的选择.