2016-09-06 10 views
0

関数のパラメータを使用して配列をリセットしようとしています。私は、配列をクリアしたい関数のパラメータを使用して配列をリセットする

<script> 
fruitArray = ["apple", "banana", "orange", "pineapple"] 
function newFruit(myArray){ 
    myArray=[]; 
} 
newFruit(fruitArray) 
alert(fruitArray[0])//Returns "apple" 
</script> 

、それが機能によって動作していない:

は、ここに私のコードです。私はラインについては分かりません:

myArray=[]; 

私はこれを学ぶのを助けてください。

ありがとうございます。

+0

JavaScriptは参考資料ではありません。 https://en.wikipedia.org/wiki/Evaluation_strategyを参照してください。 –

答えて

0

user3378165は、正しい答えを与えた:実は、質問はby valueトピックです

<script> 
fruitArray = ["apple", "banana", "orange", "pineapple"]; 
function newFruit(myArray){ 
    myArray.length = 0; 
} 
newFruit(fruitArray); 
alert(fruitArray[0]);//Returns "apple" 
</script> 

、あなたがhereより多くを学ぶことができます実用的な面ではを、これは、パラメータ自体(などを変更した場合ことを意味しあなたがした)、それはパラメータに与えられた項目には影響しません。しかし、パラメータの内部変数(array.length = 0)を変更した場合、その値はバックアップに反映されます。

+0

myArray.length = 0; ありがとうございました:) – Steven

0

このようにします。あなたが行った変更を使用して配列を設定していない0

myArray.length = 0 
0

に長さを設定し、あなたがnewFruit関数に配列を送信する、あなたはそれを変更するが、これはあなたfruitArrayとは何の関係もありません。

だから、あなたがしなければならないすべては、関数から変更された配列をreturnすると、次のように関数から配列returned、とあなたfruitArraysetすることです:

fruitArray = ["apple", "banana", "orange", "pineapple"] 
 
    function newFruit(myArray){ 
 
     myArray = []; 
 
     return myArray; 
 
    } 
 
    fruitArray = newFruit(fruitArray); 
 
    alert(fruitArray[0]);//Returns "undefined" because there is no a [0] place in the fruitArray. 
 
    alert(fruitArray);//Returns ""-empty array.

によってあなたのコードが欠けている方法;

この方法で配列をクリアすることもできます:

fruitArray.length = 0 
-1

javascriptでは参照渡しの概念がありません。関数への参照によってオブジェクトリテラルを渡すことができます。

fruitObj = new Object; 
fruitObj.fruits = ["apple", "banana", "orange", "pineapple"]; 
function newFruit(myObj) { 
    myObj.fruits = []; 
} 
newFruit(fruitObj); 
alert(newFruit.fruits); // alerts an empty array 
+0

配列はオブジェクトです。 – zerkms

+0

@zerkms私の修正をありがとう。プロトタイプの継承のため、javascriptのすべてのオブジェクトはオブジェクトです。しかし、オブジェクトの直接インスタンス、すなわち、 'typeof(obj)==" object "というオブジェクトは、私の理解に基づいて参照することで関数に渡すことができます。私が間違っているなら、私を訂正してください。 – lucifer

+0

残念ながらあなたは間違っています。 "javascriptのすべてのオブジェクトは、プロトタイプの継承のためオブジェクトです" ---これは意味をなさない。つまり、typeof(obj)== "object" "--- typeof(null)== 'object''のオブジェクトであり、' null'は間違いなくオブジェクトではないオブジェクトです。 – zerkms

関連する問題