• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptの$は文字以外にも意味がある?)

JavaScriptの$には意味がある?

このQ&Aのポイント
  • JavaScriptの$は、単なる文字として扱われる。
  • "$を変数として宣言している"とすれば、var $ = ~~~のようになる。
  • $.ajaxなどの記述は、変数$の下の階層のオブジェクトと思われる。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

根本的なところで、錯覚してしまっていると思います。JavaScriptそのものには、$というオブジェクトはありません。 このコードは、単なるJavaScriptではなくて、jQueryというJavaScriptライブラリを利用したコードです。$は、このjQueryというライブラリに用意されているものです。これは、HTMLから必要な要素を指定し操作するための機能を提供するもので、一度慣れるとjQueryなしのコードは書く気がしなくなるほどに便利であるため、非常に広く普及しています。 ◆疑問1 「$を変数として宣言している」とすれば、以下のプログラムの始まりは var $ = ~~~ のようになりますよね? ライブラリ内で既に$は定義されているため、実際に書くコードにはそのような文はありません。 ◆疑問2 3行目あたりに出てくる「$.ajax(」のような記述は、変数$の、下の階層のなんらかのオブジェクト?なのかと思いましたが、$が何かのクラスであったり構造像体である旨は、どこにも宣言されていないので、変数ではない何かかのでしょうか?? $は関数でありオブジェクトでもあります。JavaScriptでは、関数もオブジェクトであり、自身の中にプロパティとして更に関数やオブジェクトを保管できます。$はそうしたものです。ajaxは、$内にあるメソッドです。 ◆疑問3 いろんなところに、function()とあるのは、なぜなのですか? 無名関数?とかいうのがあるということはどこかで知りました。 が、 (1)下のプログラムでは、何回もfunction()として、処理を記述していますが、 何の意味があるのでしょうか? function(){  処理内容; }, と書くくらいなら、最初から無名関数としてくくらなくても、良くないですか? むしろ、無駄な文字数が増えるし、しかもわかりにくいように思いますが、この記載にメリットはあるのでしょうか? これは、jQuery特有の書き方です。$そのものがjQueryオブジェクトであるため、$(function……)と記述することで、jQueryの引数に関数オブジェクトを引き渡す役割を果たしています。このあたりは、jQueryライブラリについて理解しないとちょっとわかりにくいと思います。いずれにせよ、JavaScriptでそういう書き方に何かの意味があるというのではなくて、使っているjQueryライブラリで「こうやって書くとこう働きます」と定義されている決まりに従って書いている、と考えてください。

TeferiMage
質問者

お礼

ありがとうございます! 自分が、どういうところがわかってなさそうなのか?を汲み取って頂いた回答、とてもわかりやすかったです! JQueryのライブラリは眺めて見ようと思います。

その他の回答 (2)

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

◆回答1 そのコードにないだけでどこかにあります でないと動きません ◆回答2 そのコードにないだけでどこかにあります でないと動きません ◆回答3 よく前後を見ましょう その関数を関数に渡してるのです

TeferiMage
質問者

お礼

ありがとうございます。 (3)は、関数の結果を、上の階層の関数の引数にすることはよくありますが、短い処理なら関数として宣言する必要がないのかな?とう疑問でした。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

> 「$を変数として宣言している」とすれば、以下のプログラムの始まりは var $ = ~~~ のようになりますよね? あなたが気づいていないだけで別の所(ライブラリの中とか)で $ が定義されているはずです。 > (1)下のプログラムでは、何回もfunction()として、処理を記述していますが、 > 何の意味があるのでしょうか? > function(){ >  処理内容; >}, 関数オブジェクトにしないと「処理内容」をオブジェクト(データ)として扱えません。 例えば、  var a = function(){ /*処理内容*/ };  a(); みたいに変数に「処理内容」を格納するには関数オブジェクトが必要です。 また、関数の引数に渡したい場合も同様です。 あなたが提示しているソースコードでは、 errorプロパティやsuccessプロパティに関数オブジェクトが格納されることになりますし、 each関数の第一引数にも関数オブジェクトが渡されます。 (これ自体は別にjQuery特有の書き方というわけでもないです。)

TeferiMage
質問者

お礼

ありがとうございます! どうも私は関数オブジェクトというのがわかっていないようです。 var a =function(・・・ のa側は、呼び元側だけで使えるローカル変数と認識していました。 調べてみますー

関連するQ&A