2015-06-02 119 views
0

在我的javascript中有點奇怪的行爲。我想通過使用返回受控陣列的函數來使document.ready更清潔。在函數中返回數組給出undefined javascript

function manipulateArray(arrayToBeManipulated){ 
    var result=new Array(); 
    //...push something in result.... 
    result.push(arrayToBeManipulated[0]); 
    console.log(result); 
    return result; 
} 

console.log總是向我顯示正確的結果。但是,當我調用方法

//...code...// 
var x=new Array(); 
//push something into x 
var result=manipulateArray(x); 
console.log(result); 

它始終顯示我undefined。是否有一個原因?

編輯可能我忘了告訴該函數在$.ajax請求中調用。這可能是問題嗎?

+0

被它表示'undefined'或'[未定義]'?? – Khalid

+0

我使用[jsFiddle](http://jsfiddle.net/8s85u24m/)對其進行測試時看到了預期結果。你怎麼弄不明白? – Robin

+0

你的'x'是空的。 – Zee

回答

3

其結果不是undefined它是[undefined]

  1. 您可以創建沒有任何內容的數組X.
  2. 您可以創建沒有任何內容的數組Y.
  3. 你推0指數排列X(這是隱含undefined)爲Y
  4. 您返回Y(現在有undefined索引0明確的價值。
+0

我跳過了我實際操作數組的部分,以查看返回本身是否有任何問題 –

+0

@RiccardoLomazzi - 您需要提供一個能夠真正再現問題的測試用例。 – Quentin

2

那是因爲你的新Arrayx是空的,東西推到它,因爲當你操縱的功能數組,你把第一個指數,這是[undefined]你的問題,

我已經推單一元素和現在的工作

function manipulateArray(arrayToBeManipulated){ 
 
    var result=new Array(); 
 
    //...push something in result.... 
 
    result.push(arrayToBeManipulated[0]); 
 
    console.log(result); 
 
    return result; 
 
} 
 

 

 
//...code...// 
 
var x=new Array(); 
 
x.push(1); 
 
var result=manipulateArray(x); 
 
console.log(result);

+0

我已經編輯了第一篇文章,並澄清了函數被調用的地方 –