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

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

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

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

Q&A

3回答

1036閲覧

Javascript funciónがわからない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2015/07/24 10:11

función calcCircle(radius) {
return radius * radios * 3.14;
}

función callFunc() {
área = calcCorcle(5);
return área;
}

console.log(callFunc());

現在Javascriptを勉強しているのですが関数のところでつまづいています。
上にあげたコードの説明をしてもらえないでしょうか。

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

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

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

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

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

guest

回答3

0

javascript

1function calcCircle(radius) { 2 return radius * radius * 3.14; 3} 4 5function callFunc() { 6 area = calcCircle(5); 7 return area; 8} 9 10console.log(callFunc());

まず、エラーが出ないよう、関数名、変数名などを修正しました。
出力結果は「78.5」でした。円の面積を求めるコードでしょうね。


JavaScriptに限らず、C言語など手続き型指向の言語には、
たいてい関数があります。

ややこしいですが、関数型指向の言語の関数とは別です。
つまり、数学の関数とは別です。

手続き型指向の言語における「関数」とは、機能を持った部品です。
文章が段落に分かれているように、
人間に認識しやすくするため、関数に分けて構造化します。

上のサンプルコードを解説しますと、

console.log(callFunc()) → function callFunc() →
function calcCircle → console.log(コンソールに表示)

という流れで関数がリレー的に呼ばれて、
円の面積を求めて表示するという目的を果たします。

しかし、そもそもなぜ関数化するか、もう少し補足します。

まあ今回だといかにも例のための例で、
関数化する意味があんまり分からない(回りくどく思える)と思いますが、
プログラムが百行以上になったとき、関数に切り出すのは非常に重要です。

もし関数への切り出し(構造化)ができないと、
プログラムが長くなるほど複雑性が増えてしまって破たんします。
関数化は大きなプログラムを作るのに必須だと思ってください。

投稿2015/07/24 10:57

編集2015/07/24 11:00
LLman

総合スコア5592

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

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

0

まず一番最初のこの関数、

javascript

1function calcCircle(radius) { 2 return radius * radios * 3.14; 3}

これは円の面積を求める関数だというのはお分かりかと思います。
念のため解説しますと、

javascript

1function calcCircle(radius) {

この行で「calcCircleという関数を宣言します。この関数は予めradiusという外からデータを受け取るための変数を持っています」と宣言してます。続いて

javascript

1 return radius * radius * 3.14;

この行では実際の関数の動作を指示しています。「半径 × 半径 × 3.14」をした結果を、関数を呼び出したプログラムに返すように指示しています。
そして

javascript

1}

この括弧で関数の動作の定義を終了しています。

問題は次の関数とconsole.log()からでしょうか。

javascript

1function callFunc() { 2 area = calcCircle(5); 3 return area; 4}

まずこの関数の1行目では「callFuncという関数を定義します。この関数は外からデータを受け取る変数を何も持っていません」と宣言しております。
2行目では「areaという変数にcalcCircleのradiusに5を代入し、計算した結果を代入します」と指示しています。
そして3行目ではareaの値を関数を呼び出したプログラムに返す指示をしています。

最後です。

javascript

1console.log(callFunc());

これで先ほどのcallFuncを呼び出して、その結果が返ってくるわけですが……。結果として以下のように関数を見に行っています。

console.log → callFunc() → calcCircle(radius)

結局のところ、

  • console.logがcallFuncの結果を出す
  • callFuncはcalcCircleのradiusに5を代入した結果を出す
  • calcCircleはcallFuncに「radiusに5を代入した計算をして」と言われたので計算して結果を出す

という流れです。

長々と説明して余計ややこしくなったかもしれませんが、参考になれば幸いです。

投稿2015/07/24 10:50

manzyun

総合スコア2244

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

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

0

javascript

1function calcCircle(radius) { 2 return radius * radius * 3.14; 3} 4 5function callFunc() { 6 area = calcCircle(5); 7 return area; 8} 9 10console.log(callFunc());

なぜスペイン語なのか不明ですが、上記の通り英語でないと動作しません。
上から、
1.calcCircle関数の宣言。
2.callFunc関数の宣言。
3.そして、console.log(...となっています。

実行順番としては、
console.log内のcallFunc()でcallFunc関数が呼ばれます。
callFunc内ではcalcCircle関数を呼び、引数に5を与えています。
calcCircle関数では、引数をradiusで受け取り、
radius * radius * 3.14 つまり 5 * 5 * 3.14 の計算結果をreturn文によって呼び出し元へ返しています。
callFuncでは戻り値78.5(5 * 5 * 3.14の計算結果)をarea変数で受け取り、それを呼び出し元へ返しています。
最初の呼び出し元へ値78.5が返り、
console.logに渡り、
ブラウザの開発者ツール内に表示されます。

console.logの結果はブラウザの開発者ツールを表示させなければ表示されません。

投稿2015/07/24 10:44

編集2015/07/24 10:48
rik

総合スコア1151

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問