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

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

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

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

Q&A

解決済

3回答

158閲覧

関数のロジックについて一から教えてください。

haruniku

総合スコア527

JavaScript

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

0グッド

1クリップ

投稿2017/08/13 16:30

編集2017/08/13 16:32
function kansu(num1){ var num = 1; if(num < 2){ return num1; } alert(num1); } var aaa = kansu(10);

やりたいことは
if文で左辺と右辺を比較し
左辺が右辺より大きい場合はアラートで10と出したいです。
それ以外ははじくという処理を行いたいです。
javascriptをやり始めて日がまだ浅いので関数のロジックについて教えていただける方を
探しております。
単純な質問で申し訳ございませんが、ご教示の程よろしくお願いします。

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

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

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

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

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

chelsy7110

2017/08/13 16:43

書いてあるコードで一応書かれている動きになっているのではないかと思うのですが・・・書かれているコードの動きを詳しく知りたいということでしょうか?
haruniku

2017/08/13 16:44

はい!その通りです。
haruniku

2017/08/13 16:45

returnの部分はnum1ではなくnumということでしょうか?
guest

回答3

0

ベストアンサー

  1. var aaa = kansu(10);num110が入った状態でfunction kansu(num1)が呼ばれます。
  2. var num = 1;でnumに1が入ります。
  3. if(num < 2)でnumと2を比較します。この場合はnum = 1ですので、num < 2 = trueとなります。
  4. return num1;により、num1が呼び出し元に返ります。
  5. aaaに10が入ります。

このような動きになっています。
現在はnumと2の比較をしていますのでalert(num1);が呼び出されることは絶対にありません。
var num = 1;var num = 3;に変更してみるとアラートが出るのではないかと思います。
アラートが呼び出された場合にはreturn文がありませんので、呼び出し元に何も返らずaaa = undefinedになります。

投稿2017/08/13 16:51

編集2017/08/13 16:54
chelsy7110

総合スコア596

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

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

haruniku

2017/08/13 17:01

丁寧なご回答ありがとうございます。 +1付けさせていただきます。 1~5までじっくりと読ませて頂きました。 もう1点ご質問させて頂きます。 今回は関数の中にnumという変数を作ったのですが、resultで定義しても結果は同じでしょうか?
haruniku

2017/08/13 17:04

質問がわかりづらくて申し訳ございませんが var num = 0 var result = 0 はそれぞれ名前のついた変数という認識でよろしいでしょうか?
chelsy7110

2017/08/13 17:04

変数名は他の変数名と被らなければ自由です。 numでもresultでもhogeでも構いません。
haruniku

2017/08/13 17:12

ご回答ありがとうございます。 たびたび質問して申し訳ございまん。 var aaa = kansu(10); ではなく var num = kansu(10); だとうまく処理がされない理由を教えていただけないでしょうか?
chelsy7110

2017/08/13 21:41

実行してみましたか? var num = kansu(10);でもちゃんと動作はすると思いますが。
guest

0

javaの話だと詳しいことは分かりませんが、SCOPEについて調べた方が良いかと。
コール元とコール先で同じresultという変数名を使用しても、実際は違う物になります(使用されるメモリ位置が違う)
なのでvar result = kansu(10)でも問題ありません。
ただ実態が違うのに、同じ変数名を使用するのは後々混乱の元になります。
同じ変数名を使う明確な理由が無いのであれば、aaaでもresult2でも何でも良いので
違う変数名にした方が良いです。

投稿2017/08/16 07:00

poko_poko

総合スコア168

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

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

0

function kansu(num1){ var result = 3; if(result < 2){ return num1; } alert(num1); } var aaa = kansu(10);

上記の回答者様ご回答頂きありがとうございます。
ただ、もう一点新しい疑問が出てきました。
なぜ、var result = kansu(10); ではなく var aaa = kansu(10); なのかという疑問です。
どなたかその点に関して教えて頂ける方いらっしゃいますでしょうか?
素朴な疑問で申し訳ございませんが宜しくお願いします。

投稿2017/08/13 17:19

編集2018/01/14 18:46
haruniku

総合スコア527

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問