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

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

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

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

Q&A

解決済

2回答

935閲覧

JavaScript クラスのメソッドの書き方

hiro_ike

総合スコア48

JavaScript

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

0グッド

0クリップ

投稿2021/05/15 12:19

初心者のため、これまでサンプルコードなどを参考に書いており、完全に理解していないと思うので、
質問です。

ageUp() というメソッドで、
年齢インクリメントに増加
身長インクリメントに増加
体重インクリメントに増加
気分ディクリメントに減少
銀行口座は10ごとにインクリメントに増加
というように書きたい場合、下記のように書いてみました(該当箇所のみ貼り付けてあります)。

JavaScript

1class Person { 2 constructor(name){ 3 this.name = name; 4 this.age = age; 5 this.height = height; 6 this.weight = weight; 7 this.mood = mood; 8 this.bankAccount = bankAccount; 9 } 10ageUp(num){ 11 for (let i = 0; i < num; i++){ 12 this.age++; 13 this.height++; 14 this.weight++; 15 this.mood--; 16 this.bankAccount+=10; 17 } 18 }

初心者のため、上記コードを確認するためのテストの書き方が分からず、
アドバイスいただけますと幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Q.上記コードを確認するためのテストの書き方が分からない

Ans.まずテストコードより前にコンソールでエラーを確認する癖をつけましょう。

まずは落ち着いてそのJS(JavaScript)のコードを貼り付けてブラウザのコンソールを確認してみましょう。
※もしブラウザのコンソールを知らない、というかコードを実行するやり方がわからないという場合は少しググってみてそれでもわからなければどこがどうわからないのかこの回答にコメントしてみてください。

コンソールを見てみると添付の画像にあるように「Uncaught SyntaxError: Unexpected end of input」と出ています。
イメージ説明

このエラー文ですがSyantaxErrorは「文法間違い」、Unexpected end of inputは「予期せぬ終わりとなった入力」、くらいの意味です。(落ち着いて読めば簡単な英語なので読めますよ!)

もう一度、自分のコードを落ち着いて見てみてください。
どうやら、classのお尻の中カッコ「};」を閉じ忘れしているみたいです!追加してあげましょう。

そしてブラウザをリロードして再度、コンソールを確認してみてください。エラーがなくなっていますね。
上記のように「実行=>コンソール確認=>調べる/考える=>修正=>確認」としていくことでエラーを解決していきましょう。

それでコードの方ですが、既に別の方から指摘があるようにageやheightの出どころがありませんよね。

// hiro_ikeさんのコードのお尻を修正しただけのコード class Person { constructor(name){ this.name = name; this.age = age; // このageはどこからきたのか? this.height = height; // このheightはどこからきたのか? this.weight = weight; //このweightはどこからきたのか? this.mood = mood; // このmoodはどこからきたのか? this.bankAccount = bankAccount; // このbackAccountはどこからきたのか? } ageUp(num){ for (let i = 0; i < num; i++){ this.age++; this.height++; this.weight++; this.mood--; this.bankAccount+=10; } } }; // インスタンス化してみます。 man = new Person("hiro")

これを実行するとまた下記のようなエラーがコンソールに出ました。
イメージ説明

今回も落ち着いてエラー文を読んでいきましょう。
ageundefinedですよ」と書いてあります。このエラー文は「ageという変数が未定義だよ」ということを伝えてくれています。

またエラーに該当する行数まで教えてくれています!

このエラーを直すにはしっかりとconstructor関数の引数で値を与えて上げなければいけない!ということに気付けたでしょうか?

それでは該当のconstructor関数とインスタンス化の部分を修正してみましょう。

class Person { constructor(name, age, height, weight, mood, bankAccount){ ~~~省略~~~ man = new Person("hiro", 20, 60, "happy", "Mizuho_09") console.log(man.name) // => hiroと表示されました!

という感じです。なんとなく、プログラムを書き進めていく方法、エラーを直す方法と伝わったでしょうか?残りの部分についても再度質問者さんの方で考えてみていろいろ試行錯誤してみてください。

もしどうしてもわからなければまたコメントしてくださいねー。

いったん、これで回答とします。

投稿2021/05/15 18:15

digitalhimiko

総合スコア142

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

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

0

テストするまでもなく、ところどころおかしい。

class Person { constructor(name){ this.name = name; this.age = age; // <- どこにあるの? this.height = height; // <- どこにあるの? this.weight = weight; // <- どこにあるの? this.mood = mood; // <- どこにあるの? this.bankAccount = bankAccount; // <- どこにあるの? } ageUp(num){ for (let i = 0; i < num; i++){ this.age++; this.height++; this.weight++; this.mood--; this.bankAccount+=10; } }

それと、テストって、なんのテストでしょうか。

テストと言っても、何種類かあったはずです。
大枠でも『ホワイトボックステスト』、『ブラックボックステスト』。

小枠だと、『条件分岐網羅』とか。

単に動くかどうかなら、

普通に呼び出して使えばいいのでは?
せいぜい、これを使えば良くない?

投稿2021/05/15 12:45

BeatStar

総合スコア4962

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問