0

私は長い間これを理解しようとしてきましたが、助けていただければ幸いです。

コードは次のとおりです。ここで見ることができますhttp://incoming.comule.com/isnan.html

<script>
var price = new Array();

function add(price) {
//alert("function add: is price not a number? = "+isNaN(price));
price[0] = price;
}

function addman() {
price[0] = 0.87;
}

function status() {
alert(price[0]);
}

function num() {
alert("function Number: is price not a number? = "+isNaN(Number(price[0])));
}

function pInt() {
alert("function parseInt: is price not a number? = "+isNaN(parseInt(price[0])));
}

function pFloat() {
alert("function parseFloat: is price not a number? = "+isNaN(parseFloat(price[0])));
}
</script>

<a href="javascript:add('0.45');">Add price 0.45</a> then click ... <a href="javascript:status();">status</a> ,
 <a href="javascript:num();">number</a> , <a href="javascript:pInt();">parseInt</a> , <a href="javascript:pFloat();">parseFloat</a>

<p>

<a href="javascript:addman();">set manually</a>

価格を追加してからステータスをクリックすると、未定義として表示されますが、手動で設定してからステータスをクリックすると、ステータスに値が表示されます。唯一の違いは設定方法です。関数変数を介してこれを追加する方法を知っている人はいますか?

4

2 に答える 2

1

問題は、配列と関数の引数が同じ名前を共有していることです。関数スコープでは後者が前者に優先するため、外部配列へのアクセスが事実上失われます。

引数名を変更すれば大丈夫です。

于 2012-08-14T10:10:06.603 に答える
1

Array名前を。以外に変更する必要がありますpriceadd関数内はprice、配列ではなく関数パラメーターを参照します。

于 2012-08-14T10:13:41.920 に答える