【问题标题】:Does VBScript's IsEmpty have an equivalent in JavaScript?VBScript 的 IsEmpty 在 JavaScript 中是否有等价物?
【发布时间】:2009-08-17 04:37:05
【问题描述】:

使用 Javascript,是否有与 VBScript 的 IsEmpty 函数等价的功能或功能? VBScript 函数返回给定变量是否为“空”,例如因为所有变量实际上都是 VARIANT,无论 VARIANT 的 vt 是否为 VT_EMPTY,而我为 Javascript 找到的大部分内容都是特定于字符串的或不可泛化的。

【问题讨论】:

    标签: javascript vbscript


    【解决方案1】:

    JavaScript 有许多不同的值可以被认为是“空”,并且有许多不同的方法来测试是否为空。

    第一件事是空的:

    1. undefined:尚未分配的值。如果你创建了一个变量但没有给它分配任何东西,这就是它所包含的内容。

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

    接下来如何测试它们。 JavaScript 是松散类型的,有很多隐式类型转换。这意味着当两个值的类型不同时,标准的等于运算符== 会执行类型强制转换。三等号运算符执行类型强制,这使其成为针对非常具体的值进行测试的最佳运算符。

    1. 您可以测试返回可以测试的字符串的值的类型(注意三等号运算符):

      if ("undefined" === typeof myFoo) { /* this would be considered empty */ }
      
    2. 您可以针对关键字undefined 进行测试(注意三等号运算符):

      if (undefined === myFoo) { /* this would be considered empty */ }
      
    3. 您可以针对关键字null 进行测试(注意三等号运算符):

      if (null === myFoo) { /* this would be considered empty */ }
      
    4. 您可以针对空字符串 "" 进行测试(注意三等号运算符):

      if ("" === myFoo) { /* this would be the empty string */ }
      
    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. */
      }
      

    大多数情况下,如果您期待某些“真实”的东西,您可以直接对其进行测试,它将被强制转换为布尔值。简而言之,您可能可以将其定义为:

    function isEmpty(value) {
        return !value;
    }
    

    但通常更有意义的是在对象之前放置一个!!! 以获得它的值。如果您期望 false0(零)作为有效值,请小心。在这些情况下,最好测试typeof 对象并做出相应的选择。

    【讨论】:

    • -1。 Null 是一个值,“”也是。如果传递给 VBScripts IsEmpty 函数,这两个值都不会返回 True。
    • 在 JavaScript 中,空的定义很少有用。
    【解决方案2】:

    不知道是不是应该这样

    typeof variable == "undefined"
    

    【讨论】:

    • +1 IMO 这里唯一正确的答案,空值,“”等不是空值。 Undefined 几乎等同于 VBScript 中的 Empty。
    【解决方案3】:
    function IsEmpty( theValue ) 
    { 
        if ( theValue === undefined ) 
        { 
            return true; 
        } 
        return false; 
    }
    

    【讨论】:

    • 你需要使用===。实际上,IsEmpty(false) == true,这可能不是他想要的(尽管我已经很久没有做过任何 VBScript)了。
    • 请注意,这不等同于 VBScripts IsEmpty,它仅在变量为 Empty 时才严格返回 true。如果保存的值为 Null 或“”或 0 或 1899 年 12 月 30 日,则 VBScripts IsEmpty 返回 false。但是 Empty 等于 0 和“”以及 1899 年 12 月 30 日。
    【解决方案4】:

    函数 isEmpty(值){ 返回值 == 空 ||值 === ""; }

    【讨论】:

      【解决方案5】:

      没有。

      您必须始终针对“null”、未定义和“”来测试您的变量。 (无聊)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 2012-11-17
        • 2016-01-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多