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")
これを実行するとまた下記のようなエラーがコンソールに出ました。
今回も落ち着いてエラー文を読んでいきましょう。
「age
がundefined
ですよ」と書いてあります。このエラー文は「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と表示されました!
という感じです。なんとなく、プログラムを書き進めていく方法、エラーを直す方法と伝わったでしょうか?残りの部分についても再度質問者さんの方で考えてみていろいろ試行錯誤してみてください。
もしどうしてもわからなければまたコメントしてくださいねー。
いったん、これで回答とします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。