未定义的测试无法在javascript中运行

时间:2010-12-24 11:48:10

标签: javascript

当我使用未定义的参数测试我的函数时,我的脚本中出现错误'foo' is undefined.。据我了解,这不应该发生。

我的主叫代码:

//var foo
var test = peachUI().stringIsNullOrEmpty(foo) ;

我的功能(更大框架的一部分)。

    stringIsNullOrEmpty: function (testString) {
        /// <summary>
        ///     Checks to see if a given string is null or empty.
        /// </summary>
        /// <param name="testString" type="String">
        ///     The string check against.
        /// </param>
        /// <returns type="Boolean" />

        var $empty = true;

        if (typeof testString !== "undefined") {
            if (testString && typeof testString === "string") {

                if (testString.length > 0) {
                    $empty = false;
                }

            }
        }
        return $empty;
    }

有什么想法吗?

请注意。在发布这个问题之前,我已经很好地阅读了其他类似的问题。

2 个答案:

答案 0 :(得分:2)

你不能将一个不存在的变量(undefined,而不是null ... 存在的那个)传递给一个函数,它试图获取调用

foo传递的值
var test = peachUI().stringIsNullOrEmpty(foo);

...它不存在,所以你只是在那条线上得到了错误,就像你用一个更简单的情况一样:

alert(foo);

现在,如果您尝试将其称为某事物的属性,那么它就是有效的,例如:

alert(window.foo);

然后传入undefined,因为它是已知/当前对象的未定义属性。

答案 1 :(得分:0)

我也得到了错误,但它与您的代码无关,这是因为您将一个不存在的变量传递给函数。这有效:

var foo = undefined;
var test = peachUI().stringIsNullOrEmpty(foo) ;

顺便说一下。该错误已经告诉您问题不在您的函数中,否则为'testString' is undefined