2011-08-07 24 views
0

智能感知功能很快停止工作,只要我打電話功能「meanValue」這個簡單的Javascript函數出錯了嗎?

我想我縮小了它,但我無法弄清楚它。顯然,函數「meanValue」有問題,因爲我在另一個函數中調用它之後,所有形式的intellisense都停止工作......這是我的代碼。對於內部功能測試後,我打電話meanValue功能的智能感知的一切不工作...

我不知道該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> 
+0

除了什麼@robert說,你想治療一維數組作爲多維數組。這至少會導致邏輯錯誤。 –

+0

等什麼? if語句查看是否定義了arr [0] .length,意思是如果它沒有被定義,那麼它不是一個多維數組,而是它轉到else語句。 – Spets

+0

啊,我看到你在那裏做了什麼。這就說得通了。 –

回答

0

我能夠重現該問題在我的Netbeans。

這個問題似乎從兩種語言的混合在一個文件中的某些IDE的莖。 (這是一個帶有一些Javascript的.php文件嗎?)

由於某些原因,IDE intellisense引擎正在試圖解析該代碼塊中小於(<)的符號,就好像它試圖驗證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> 
+0

我編輯了原帖。 meanValue函數有些問題,因爲在我說「var oranges = meanValue(a)」後,intellisense不能用於test()中的任何代碼行。 – Spets

+0

同樣的事情。我注意到intellisense的問題是,如果我正在使用的函數有somwhere代碼「if(a [0] .length){}」它幾乎失敗。 – Spets

+0

我接受了答案,謝謝。我將在明天嘗試一下,看看它是否有效。如果有的話,會非常棒。再次感謝,乾杯。 – Spets

1

在試驗(+),你有一個變量的測試,有沒有什麼=後分配給它。這可能是其中一個問題。

誰在調用test()?

+0

沒有我只是寫了「VAR測試=」表明,智能感知不工作有... – Spets

+0

我運行代碼和橙子是沒有問題的2.6666。還要在** a **和** b **前添加'var'。你也可能想要返回test(),true或者orange。 – robert

+0

嘗試在「var testintoranges = meanValue(a);」之後寫入內容並讓我知道intellisense是否工作? Thnx我修復了a和b的var infront。 我知道代碼運行,一切都很好,但intellisense對我來說非常重要,因爲我正在編寫許多其他功能,如果它決定停止工作,我需要找出原因? – Spets