- ベストアンサー
渡すべきデータとはなんでしょうか…
こんにちは JavaScriptで度々出てくる「渡すべきデータ」とはなんのことでしょうか。 例えば、 Var 変数名 = new Array(引数,引数・・・); オブジェクトの生成時にコンストラクタに引き渡すデータを引数と呼びます。渡すべきデータがない場合は省略します。 とあります、イメージがうかばないのですが、数字というものが勝手に引っ付いたり離れたりパソコンの中でするのでしょうか。何のために・・ そもそも、なにを引き渡す必要があるのでしょうか・・・ すみません 宜しくお願い致します。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
そもそも関数が何故必要かというと、 一続きの長い処理を書くと重複する部分が出てきたり、見づらくなったりするので、分離するためです。 しかし、関数として分離すると、その関数内のコードは分離元との繋がりを失います。 つまり、分離元の変数を利用できなくなるのです。 そのため引数と返り値という仕組みを用いて関数と分離元のコードでやりとりする必要があるのです。 そして引数とは、良く渡す貰うのイメージで用いられますが、 ここでいう渡すとは元の場所から移動させて無くなったりするものではないです。 var a = 1; var b = a; と同じで、 function fn(b) {} ////////////////////////////// var a = 1; fn(a); とは aという名前で定義されていた値1を、関数内でbという名前で使えるようにして、関数内のコードを実行させるという意味です。
その他の回答 (9)
- think49
- ベストアンサー率59% (285/482)
引数の動きは「実引数から仮引数に渡される」だけです。 仮引数に渡された後の関数内の処理は Date や Array などの関数ごとに異なります。 > 書いたらその言葉でしか会話が成り立たないのは難しいですね 質問するに当たって「自分が何を知っていてどこが分からないのか」は質問者だけが知りうる情報です。 new Date の下りは「何がどうわからないのか」の具体性がないので何とも答えがたいですね。 完結にまとめれば、仕様書を読んでくださいという事になりますが。 http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/15-9_Date_Objects.html#section-15.9.3.1 # Re: question_aprilさん
- think49
- ベストアンサー率59% (285/482)
#7 です。 以下、補足及びお礼より引用。 >「引き継ぐべきデータ」といったほうが的確ですね 何から何に引き継ぐのでしょうか。 > でも、聞きたかったことは、データが移動するってどういうことかって思っていたのです。勝手に動いているのかとおもいました データがどこからどこへ移動するのでしょう? 質問文のどこにも「移動する」とは書かれていないようですが…。 そもそも、「オブジェクトの生成時にコンストラクタに引き渡すデータを引数と呼びます。渡すべきデータがない場合は省略します。」はどこから持ってきたのでしょうか。 前後の文脈によって解説の意味も変わってくると思いますが…。 # Re: question_aprilさん
お礼
あ、ちょっと補足に書き忘れたのですが、 移動するとは質問文にないとありますが、 文の意味を読み取ってほしいのですが、 勝手に引っ付いたり離れたりするのでしょうかと疑問に思っているということは引数というものがどのように動いているのか、つまりどのように移動しているのかってことです。 書いたらその言葉でしか会話が成り立たないのは難しいですね
補足
例えば、 var a = new Date('2015,08,14'); Var b = a.toDateString(); document.write('今日は:' + b); のように、提示してそれを引き継ぐ
- think49
- ベストアンサー率59% (285/482)
new Array() は配列を生成するだけの機能を持ったコンストラクタです。 引数がなければ空の配列を生成します。 引数があるなら引数の値を元に配列を生成します。 var a1 = new Array, a2 = new Array(1, 2, 3, 4); console.log(a1); // [] console.log(a2); // [1, 2, 3, 4] # Re: question_aprilさん
お礼
引数について、参考書で理解しました。 というか、たとえばどんな風に数字がもっていかれるのかなと思ったのです最初。 今わかったのですが、変数名を決めて、その内容を定め、それについて順番を決めるために引数というものを使って等説明しにくいですね でも、聞きたかったことは、データが移動するってどういうことかって思っていたのです。勝手に動いているのかとおもいました
補足
「渡すべきデータ」 というより、 「引き継ぐべきデータ」といったほうが的確ですね
- Gotthold
- ベストアンサー率47% (396/832)
> 引数が受け継がれていく様子を知りたいのです。 私の回答で引数が受け継がれていく様子は分かると思いますが。 たとえば、最初の引数は以下のようにしてちゃんと参照できますよね? var list = new Array(1,2,3,4,5,6,7,8,9,10); alert( list[0] ); //最初の引数が参照できる。
- Lchan0211b
- ベストアンサー率61% (573/930)
No.3です。 > それで、数字を煮込んでなにがうまれるの?という疑問なんです。 > そういう引数を入れる入れ物はどれかが引数と理解したら数字と英語でできた字の塊が勝手にちょうどよく数字なり英語を拾うのでしょうか? > コードのなかでの動きがよくわからないんです。 なんかプログラミングの基礎を全く勉強しないで いきなりsocket.ioとか使おうとしているから チンプンカンプンになっているような気がします。 プログラミングのセンスがある人なら、 そんな基礎を勉強しなくても、やっていれば イメージが浮かぶようになりますが、 こういう点が疑問になるなら、まずは基礎の勉強が 必要だと思います。 http://nadesi.com/doc/index.htm のように、ゼロからプログラミングの基礎を解説して くれるものを読んで、まずはその通りにやってみて プログラミングとはどういうことなのか、一通り体験 してみることをお勧めします。 一通りの体験がないからイメージが浮かばないのだと思います。
- Gotthold
- ベストアンサー率47% (396/832)
> それで、数字を煮込んでなにがうまれるの?という疑問なんです。 プログラム次第。 > データが渡されるって、そこに人間の手で打ち込まないでどうやってもっていくのでしょう。 手で打ち込まないなら、プログラムで処理。 > また、そういう引数は具体的にどのような場面で使われるのでしょうか? これもプログラム次第。 具体例が知りたいみたいなので、 たとえば配列の要素の総和を求めるプログラムだとこんな感じ。 //配列の全要素の和を求める var list = new Array(1,2,3,4,5,6,7,8,9,10); var sum = 0; for (var i=0; i < list.length; i++){ sum += list[i]; } alert( list.join("+") + "=" + sum ); 質問内容からするとJavaScriptの勉強中だと思うのですが、 使用例とかは参考にしている書籍なりに書かれていませんか?
補足
あの、たぶん難しい質問をしているのかもしれないとおもったのですが、 和を求めたいのではなくて、 引数が受け継がれていく様子を知りたいのです。 なので、たとえば、じゃあ、 IF文でfalseが出た場合に一部のデータをSocket IOに渡すことには可能でしょうか。
- Lchan0211b
- ベストアンサー率61% (573/930)
日本語で苦労しているようなので、まずは料理を例えにして説明してみます。 おなかがすいたのでカレーを作ろうと思ったとします。 カレーを作るには、たくさんの手順を踏む必要がありますが、 その一つとして、ジャガイモの皮をむいて一口サイズに切る必要があります。 もしジャガイモに芽があったら芽も取る必要があります。 それを当たり前にわかっている人は、それを総称して「ジャガイモを処理する」 と言います。 「処理する」という言葉は別に悪いことを解決するためだけに使うのでは ありません。何かすることを具体的に説明する替わりに、抽象的に 総称して使える便利な言葉として「処理する」という言葉を使います。 別にプログラミングに限った使い方ではありません。 そうやって処理した各材料を今度は鍋に入れて炒めます。 この時、先に材料を全部鍋に入れてから炒める方法と まず鍋に火をつけて、後から少しずつ炒める方法があります。 ここで質問に戻りますが、 new Array()は、材料を入れる鍋を用意する処理であり、データは材料です。 鍋を用意すると同時に材料を入れたいなら、new Arrayの引数にデータを 指定すれば、そのデータを配列の中に入れられるよということです。 先に鍋だけ用意して、材料は炒めながら少しずつ入れるつもりなら new Arrayの引数を省略してデータの入ってない配列だけ用意できる ということです。 つまり「渡すべきデータ」とは、配列に入れたいデータであり、 カレーの話で言えば、鍋に入れたい材料です。 「渡したデータは何のためになるのでしょうか?」 という質問は、 「切った材料は何のために鍋にいれるのでしょうか?」 と聞いているようなものです。 「引数がないとどうなるのでしょう・・・」 という質問は、 「鍋を用意した時に一緒に材料を入れなかったらどうなるのでしょう」 と聞いているようなものです。 鍋をどのように使ってカレーを作るかは、あなた次第です。
補足
?? 「悪いもの」と書いたことが過剰表現でとらえられたかもしれません 悪い=Badというほどのことではなくて、 例えば料理で皮を向く必要があるじゃないですか、それって面倒ですよね でもそれをしないといけないじゃないですか。 それで、数字を煮込んでなにがうまれるの?という疑問なんです。 そういう引数を入れる入れ物はどれかが引数と理解したら数字と英語でできた字の塊が勝手にちょうどよく数字なり英語を拾うのでしょうか? コードのなかでの動きがよくわからないんです。 データが渡されるって、そこに人間の手で打ち込まないでどうやってもっていくのでしょう。 また、そういう引数は具体的にどのような場面で使われるのでしょうか? 例えば、socket ioとかを使って同時画面を4つのスマホで見てる情態にあるとして、そこから、ある一人のユーザーにだけ違うデータを送るなど(可能かどうかわかりませんが)というときにデータをキャッチしたりできるんですかね
- hoge1229
- ベストアンサー率29% (58/194)
渡すべきデータとは、(プログラムを書く人が)処理させたいデータのことです。 例えば Var 変数名 = new Array(引数,引数・・・); は、Arrayのオブジェクトを生成する処理ですが、複数の引数を渡すとその引数を要素として持つArray(配列)のオブジェクトを生成します。 どういう要素を持つ配列のオブジェクトを作りたいかは、プログラムを書く人次第ですので渡したいものをどうぞということになります。
補足
回答有り難うございます。 更なる質問で恐縮なのですが、 「処理させたい」とはどういったことなのでしょうか 私達が普段日常で使う、「処理」という言葉は、問題を処理する(解決する) というふうに、何か悪いものがあって、それを解決するというイメージなのですが、 プログラミングではどういたニュアンスなのでしょうか? すみません。 よろしかったらお願い致します。
- chie65536(@chie65535)
- ベストアンサー率44% (8804/19965)
>例えば、 >Var 変数名 = new Array(引数,引数・・・); >オブジェクトの生成時にコンストラクタに引き渡すデータを引数と呼びます。 >渡すべきデータがない場合は省略します。 以下のように書くと、意味が理解できませんか? Var 変数名 = new Array(引数,引数・・・); オブジェクトの生成時にはコンストラクタを呼び出します。 コンストラクタは「関数」ですから、関数から結果が返されますし、呼び出し時に、何らかのデータを「引数」に指定して、関数にデータを引き渡す事が出来ます。 関数に、引数として渡すべきデータがない場合、引数は省略する事が可能です。
補足
回答有り難うございます! 続けての質問で恐縮なのですが、 渡したデータは、何のためになるのでしょうか? クライアントからの目線で何がかわるのでしょうか 逆言うと、引数がないとどうなるのでしょう・・・ すみません。 お時間よろしかったらお願い致します。
お礼
有り難うございます!