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

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

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

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

Q&A

解決済

2回答

1540閲覧

変数の正体について

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

1クリップ

投稿2017/01/25 12:25

変数の正体について改訂版JS本格入門に下記のように記載があったのですが、
アドレスに対して、人間がわかりやすいように名前を付けておく──それが変数の正体です。
変数とは「値の格納先(アドレス)に対して付けられた名札」といえます。

つまり
変数とは箱だとよくたとえられますが実際は、値の格納場所の場所を示す、
アドレスそのものにつけた名札のことなのですか?

どうもいまいちはっきりしません

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

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

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

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

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

guest

回答2

0

ベストアンサー

JavaScriptの解説本でそこまで踏み込んだ記述があるのは珍しいですね。

コンピュータ寄りでの説明をすると正しくその通りで、値を格納した(メモリ上の)アドレスを人間側でわかりやすくするために表しているものが変数になります。

JavaScriptや他のスクリプト言語でもここまで踏み込んだ説明をしているものは少ない(と言うか、無い)ですから、なかなかイメージがつかみにくいかもしれませんね。もし、興味があれば(機会があれば)、C言語の解説本(または解説サイト)を見てみてはいかがでしょうか。メモリ操作などに密接な機構を持った言語ですので、より理解を深めることができるかもしれません。

投稿2017/01/25 13:59

archiver

総合スコア1557

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

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

退会済みユーザー

退会済みユーザー

2017/01/25 23:08

ありがとうございます。 やっぱり箱はたとえでメインメモリー上のアドレスという数列に名前を付けたものを変数というのですね。 そして複数ある場合もある名前を付けたアドレスの、一つ一つの識別名を変数名というのですね。 名札をが変数という教科書の言い方が私はわかりにくく、 アドレス自体が変数ではなく名札だけを変数というのかと思ってしまいましたが、 正しくは00110101のようなアドレスを示す数列に名前を付けたもの全体を変数といい、 その中の名札のみに変数名が記載されているという方が正しい認識ですね。 改訂版JS本格入門という本なのですが、かなり、難しいですし、表現が固く、単語もイディオムとか難しい単語を多用していて、 正直初心者にはかなり難しいです。 おそらくレベルは入門ではなく中級くらいなのでしょうね。 サイ本に次に行きたい人が読むレベルなのでしょうね。 ES6の本がないのでわかりにくいですが、仕方がなく購入しました。
archiver

2017/01/26 15:23

>正しくは00110101のようなアドレスを示す数列に名前を付けたもの全体を変数といい、 >その中の名札のみに変数名が記載されているという方が正しい認識ですね。 概ね、そのような認識でいいと思います。もう少し踏み込んで言えば、あるアドレスから決められた(あるいは指定された)大きさ分確保された領域を「変数」といい、人間側で扱いやすいように宣言時に付けられた名前を「変数名」という、と言った感じでしょうか。 ちなみに、「改訂版JS本格入門」という本は、技術評論社から出ている「改訂新版JavaScript本格入門~モダンスタイルによる基礎から現場での応用まで」(著:山田祥寛)のことでしょうか?
退会済みユーザー

退会済みユーザー

2017/01/26 23:47

難しいですね。 参照型は 参照先のアドレスが変数。 そのアドレスに人間がわかりやすいように識別名を付けた識別名が変数名。 ということですね。 ただ基本型は値そのものが入っていると聞きますが、 もしかするとこれもたとえで、実際は値そのものは入っておらず参照型のようにメインメモリー上の別の場所に値は存在し、参照型のように基本型の中にもアドレスしかないということでしょうか? >>> ちなみに、「改訂版JS本格入門」という本は、技術評論社から出ている「改訂新版JavaScript本格入門~モダンスタイルによる基礎から現場での応用まで」(著:山田祥寛)のことでしょうか? そうです。これしかES6はないので購入しましたが、イディオムがなんだとか初心者にはわかりにくいです。おそらく中級本なんでしょうね。これがわかればサイ本に行けますかね。 次はどれをやろうか考えないといけません。
archiver

2017/01/27 14:53

>ただ基本型は値そのものが入っていると聞きますが、 >もしかするとこれもたとえで、実際は値そのものは入っておらず参照型のようにメインメモリー上の別の >場所に値は存在し、参照型のように基本型の中にもアドレスしかないということでしょうか? いえいえ、その本の説明の通り、基本型は直接その値が格納されているものです。
退会済みユーザー

退会済みユーザー

2017/01/28 05:52

基本型は本当に値自体が格納されているのですね。 ありがとうございました。
guest

0

初心者にプログラミングにおける変数を正しく理解してもらうために、「箱」という説明をするのがいいのかどうかには議論があります。

一例:
プログラミングの変数を教えるときの「箱の説明」の是非について。 - Togetterまとめ

否定派の意見を要約すると

  • 箱だとすると、複数個入れられそうに思えてしまう。
  • x = y; のようなケースで箱に箱を入れるように見えてしまわないか。
  • 同じケースで、箱に別の箱の「中身」を入れるのだとしても、「中身」のコピーではなく移動に見えてしまわないか。

という感じです。ただ、これらは、それぞれ

  • 箱にはサイズと型があって、その型に合うものを一つしか入れられない。
  • = の右辺は、箱そのものではなく、箱の中身を表す。
  • 箱の中身を使ってもなくなるわけではなく、コピーが作られる。

と、プログラミング固有のルールを合わせて教えればいいだけではないかという意見もあります。

いずれにしても、「箱」モデルは、物理的・具体的なモノをイメージした方が理解しやそうだ、という推測から導入されたモデルに過ぎません。しかし、実態は、つまり、プログラミング言語の処理系(コンパイラ)を実装する上では、変数というのは、名前と型とアドレスの組として扱います。なので、メモリを明確にイメージできるレベルに到達しているなら、「箱」にこだわらず、アドレスにつけた名前ととらえてまったく問題ありません。むしろその方が、Cなどのポインタをもつ言語でもつまずかずに済むと思います。

投稿2017/01/25 13:38

punchan

総合スコア81

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

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

退会済みユーザー

退会済みユーザー

2017/01/25 23:08

ありがとうございます。 やっぱり箱はたとえでメインメモリー上のアドレスという数列に名前を付けたものを変数というのですね。 そして複数ある場合もある名前を付けたアドレスの、一つ一つの識別名を変数名というのですね。 名札をが変数という教科書の言い方が私はわかりにくく、 アドレス自体が変数ではなく名札だけを変数というのかと思ってしまいましたが、 正しくは00110101のようなアドレスを示す数列に名前を付けたもの全体を変数といい、 その中の名札のみに変数名が記載されているという方が正しい認識ですね。 改訂版JS本格入門という本なのですが、かなり、難しいですし、表現が固く、単語もイディオムとか難しい単語を多用していて、 正直初心者にはかなり難しいです。 おそらくレベルは入門ではなく中級くらいなのでしょうね。 サイ本に次に行きたい人が読むレベルなのでしょうね。 ES6の本がないのでわかりにくいですが、仕方がなく購入しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問