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

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

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

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

Q&A

解決済

4回答

322閲覧

JavaScriptの関数について

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2019/06/17 13:02

編集2019/06/17 13:52

JavaScriptの関数の引数

JavaScriptでコードを書いてる時に関数で悩み事が発生しました。
function Stone()かfunction Stone(Month)
一応どちらも正しく動作はするのですが、どちらで書くのがプログラムとして綺麗で正しいのか分からないため質問させていただきます。
この場合どちらのほうがいいのでしょうか。

追記:サンプルありで一番簡略化されており、とても分かりやすかったのでベントアンサーを決めさせていただきました。様々なやり方がありとても参考になりました。回答してくださった方々ありがとうございました。

1のソースコード

var Monthtemp = prompt("誕生月を入力"); var Month = Monthtemp * 1; Stone(Month); function Stone() {  switch(Month)  { case 1: console.log("誕生石:" + "ガーネット"); break; case 2: console.log("誕生石:" + "アメシスト"); break; case 3: console.log("誕生石:" + "アクアマリン"); break; case 4: console.log("誕生石:" + "ダイヤモンド"); break; case 5: console.log("誕生石:" + "エメラルド"); break; case 6: console.log("誕生石:" + "真珠"); break; case 7: console.log("誕生石:" + "ルビー"); break; case 8: console.log("誕生石:" + "ペリドット"); break; case 9: console.log("誕生石:" + "サファイア"); break; case 10: console.log("誕生石:" +"オパール"); break; case 11: console.log("誕生石:" +"トパーズ"); break; case 12: console.log("誕生石:" +"ラピスラズリ"); break;  } }

2のソースコード

var Monthtemp = prompt("誕生月を入力"); var Month = Monthtemp * 1; Stone(Month); function Stone(Month) {  switch(Month)  { case 1: console.log("誕生石:" + "ガーネット"); break; case 2: console.log("誕生石:" + "アメシスト"); break; case 3: console.log("誕生石:" + "アクアマリン"); break; case 4: console.log("誕生石:" + "ダイヤモンド"); break; case 5: console.log("誕生石:" + "エメラルド"); break; case 6: console.log("誕生石:" + "真珠"); break; case 7: console.log("誕生石:" + "ルビー"); break; case 8: console.log("誕生石:" + "ペリドット"); break; case 9: console.log("誕生石:" + "サファイア"); break; case 10: console.log("誕生石:" +"オパール"); break; case 11: console.log("誕生石:" +"トパーズ"); break; case 12: console.log("誕生石:" +"ラピスラズリ"); break;  } }

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

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

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

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

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

guest

回答4

0

ベストアンサー

グローバル変数を参照するか、関数のパラメータ変数を参照するか
の違いでしょうか。言語によらず後者の方が好まれる気がします。
ちなみに、自分だったらこんな感じで(入力チェックは省略してます)

javascript

1var Monthtemp = prompt("誕生月を入力"); 2var Month = Monthtemp * 1; 3 4console.log("誕生石:" + getStone(Month)); 5 6function getStone(m) 7{ 8 const stones = ["dummy","ガーネット","アメシスト","アクアマリン","ダイヤモンド","エメラルド","真珠","ルビー","ペリドット","サファイア","オパール","トパーズ","ラピスラズリ"]; 9 return stones[m]; 10}

投稿2019/06/17 13:35

編集2019/06/17 13:36
takasima20

総合スコア7458

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

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

yasutomi

2019/06/17 13:36

"ラピスラズリ]; は "ラピスラズリ"]; ですね。
takasima20

2019/06/17 13:40

ご指摘ありがとうございます。(汗
guest

0

2に1票
但し引数に使う変数名は変えたい

オマケ情報として、"use strict"を使っておくと汚いコードは書き辛くなります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode

投稿2019/06/17 13:31

hentaiman

総合スコア6415

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

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

0

どちらが良いかと言われたらStone関数に
引数が指定されている2のソースコード

ちなみに私なら下記のように書きます。
書き方は人それぞれですが、
1から12の数字以外が入力されたときの処理は
必ず入れたほうが良いです。

js

1function Stone(Month) { 2 switch(+Month) { 3 case 1: console.log("誕生石:" + "ガーネット"); break; 4 case 2: console.log("誕生石:" + "アメシスト"); break; 5 case 3: console.log("誕生石:" + "アクアマリン"); break; 6 case 4: console.log("誕生石:" + "ダイヤモンド"); break; 7 case 5: console.log("誕生石:" + "エメラルド"); break; 8 case 6: console.log("誕生石:" + "真珠"); break; 9 case 7: console.log("誕生石:" + "ルビー"); break; 10 case 8: console.log("誕生石:" + "ペリドット"); break; 11 case 9: console.log("誕生石:" + "サファイア"); break; 12 case 10: console.log("誕生石:" + "オパール"); break; 13 case 11: console.log("誕生石:" + "トパーズ"); break; 14 case 12: console.log("誕生石:" + "ラピスラズリ"); break; 15 default: console.log('1から12の数字を入れてください。'); break; 16 } 17} 18Stone(prompt("誕生月を入力"));

投稿2019/06/17 13:22

yasutomi

総合スコア2937

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

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

0

質問の意図と違うかもしれませんが、プログラムの綺麗さで言うなら
分岐が多い場合等はjsonデータなどに格納しておいて取り出した方が良いかと思います。

投稿2019/06/17 13:12

shuzi

総合スコア197

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

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

退会済みユーザー

退会済みユーザー

2019/06/17 13:20

そういうやり方もあるんですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問