这个简单的Javascript函数出了什么问题?

时间:2011-08-07 01:03:10

标签: javascript function intellisense

当我调用函数“meanValue”

时,I​​ntellisense几乎停止工作

我想我缩小了范围,但我无法弄明白。显然函数“meanValue”有问题,因为在我在另一个函数中调用它之后,所有形式的intellisense都停止工作......这是我的代码。在调用meanValue函数后,Intellisense对函数测试中的所有内容都不起作用...

我不知道meanValue函数对我好吗? // 编辑:我把它缩小了。显然我所拥有的任何函数If(arr [0] .length)类型的语法,它几乎失败了。有一点需要注意的是函数运行正常并且调试正常但是由于某种原因,intellisense不喜欢这样。

任何人都知道另外一种方法来检查是否定义了某些内容?我想检查一下我正在看什么类型的数组,如果它是一个多维数组。

谢谢! //

<script language="javascript" type="text/javascript">

    function meanValue(arr) {
        var mean;
        var sum = 0;

        if (arr[0].length) {
            for (var j = 0; j < arr[0].length; j++) {
                sum += arr[0][j];
            }
            mean = (sum) / arr[0].length;

        }
        else {
            for (var i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            mean = (sum) / arr.length;


        }
        return mean;
    }

    function test(a, b) {
        var testing = 5;
        var oranges = meanValue(a);

     }
     var a = [1, 3, 4];
     var b = [4, 5, 6];

</script>

2 个答案:

答案 0 :(得分:1)

在test()中,你有一个变量测试,在=之后没有任何分配给它。这可能是其中一个问题。

谁在调用test()?

答案 1 :(得分:0)

我能够在我的Netbeans中重现这个问题。

问题似乎源于在某个文件中将两种语言混合用于某些IDE。 (这是一个带有一些Javascript的.php文件吗?)

出于某种原因,IDE智能感知引擎正试图解析该代码块中的小于(&lt;)符号,就像它试图验证XML一样,Javascript不是。所以,当然,它失败了。

尝试将该代码包装在[CDATA - 它应解决问题。

所以上面的例子,修改过,将是:

<script language="javascript" type="text/javascript">
//<![CDATA[ 
    function meanValue(arr) {
        var mean;
        var sum = 0;

        if (arr[0].length) {
            for (var j = 0 ; j < arr[0].length ; j++) 
            {
                sum += arr[0][j];
            }

            mean = (sum) / arr[0].length;
        }
        else 
        {
            for (var i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            mean = (sum) / arr.length;
        }
        return mean;
    }

    function test(a, b) {
        var testing = 5;
        var oranges = meanValue(a);
    }

    var a = [1, 3, 4];
    var b = [4, 5, 6];
//]]>
</script>