質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

1858閲覧

javascriptの引数の計算について

aws

総合スコア48

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/03/30 06:48

javascriptで引数数分の足し算を行うコードを書いているのですが、上手くいきません。
※javascripの本格入門 の本を見ながら写経しているレベルですのでご了承下さいませ。

本で書かれていたコード

function sum() { var result = 0; //与えられた引数を順番に取り出し、順に加算処理 for (var i = 0 , len = arguments.lenght; i < len; i++){ var tmp = arguments[i]; if (typeof tmp !== 'number') { throw new Error('数値じゃないよ' + tmp); } result += tmp; } return result; } try { console.log(sum(1, 3, 5, 7, 9));//25 } catch(e) { console.log(e.message); }

↑こちらだと結果が0になります。

function sum() { var result = 0; //与えられた引数を順番に取り出し、順に加算処理 for (var i = 0; i < arguments.length; i++) { var tmp = arguments[i]; if (typeof tmp !== 'number') { throw new Error('数値じゃないよ' + tmp); } result += tmp; } return result; } try { console.log(sum(1, 3, 5, 7, 9));//25 } catch(e) { console.log(e.message); }

↑こちらは25の合計が表示されます。こちらが求めている回答です。

違いは以下になります。
0になる方

for (var i = 0 , len = arguments.lenght; i < len; i++){

25になる方

for (var i = 0; i < arguments.length; i++) {

どちらも i に0を代入して 引数の回だけ足すのかと思いますが、何が原因で
for (var i = 0 , len = arguments.lenght; i < len; i++){
の方は上手くいかないのでしょうか?
lenに代入して数値ではなく文字列に変わってしまうとか。? ぱっと見る限り同じような気がするですが。。。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

lengthのスペルが違います。

結果がおかしいのに、何故よく見ないのか不思議です。

投稿2017/03/30 07:11

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aws

2017/03/30 07:28

ご回答有難う御座います。スペルミスお恥ずかしい限りです。。。 エラーが出てくれるとあれだったのですが、なまじ0と表示されてしまっていたので式の方を疑ってしまいました。今後気をつけます。
otn

2017/03/30 12:57

バグのうち、エラーメッセージが出るのはごく少数です。
guest

0

for (var i = 0 ;len = arguments.lenght, i < len; i++){
のtypoじゃないですか?

投稿2017/03/30 06:52

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aws

2017/03/30 07:29

ご回答有難う御座います。 タイプミスですね。。。お恥ずかしい。。。以降気をつけてます。
guest

0

成功した例があるならこれをどうぞ。
difff《デュフフ》

投稿2017/03/30 06:55

toutou

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aws

2017/03/30 07:30

この様なサービスがあるのですね。今回スペルミスでしたので今後はこの様なサービスを利用して気をつけたいと思います。 有難う御座いました。
guest

0

BAが出ていますので、参考までに
Array.prototype.reduce()

投稿2017/03/30 08:02

namimon

総合スコア726

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問