変数とは
JavaScript(に限らず多くのプログラミング)の変数は、何度も使うものを簡略化したり、記憶しておくために使うもの 関数や、関数の引数などもそれ自体は変数と同じような挙動をするので、とりあえずここではまとめて変数として扱う
基本的にJS自体の機能などで提供されているものなどの一部を除いて(requireなど)、変数と呼ばれるものは全て定義する必要があり、定義したりなんとか準備する必要がある。そしてほとんどの場合は使用するよりも前に定義したりする必要がある
下のDiscord.jsで最も一般的な処理にも変数は何箇所も出てくる
code:js
client.on('message', message => {
console.log(message.content)
})
まず1行目の最初でclientという変数を使っている。しかしこのコードの中では定義されていないので、これだけ実行するとReferenceError: client is not definedというエラーが発生する
Discord.jsを使うプログラムでのclient変数は多くの場合、Discord.jsのclientを指しているので以下のように定義する。ただしDiscord.jsを使う上では毎回同じものを書く必要があるので、深く考えず「決り文句」として理解すればいい
しかし他人が書いたコードを使用する場合は、clientではなくbotなど別の変数名にすることもあるので、推測して修正する必要がある
そして実際にボットを動かすにはloginする必要もあるので、それも書き足して完全なコードにする
code:js
const Discord = require('discord.js')
const client = new Discord.Client()
client.on('message', message => {
console.log(message.content)
})
client.login('token')
これで実際に動作する完全なコードになったので、出てきた変数を列挙してみる。Discord.jsを使うための「決り文句」に含まれるDiscordやclient、送信されてきたメッセージを表すmessageなどが主な変数である
ちなみにrequireやconsoleも(完全に変数とは言えないが)変数の1種として捉えることができる。
ここで出てきたこの2つは、最初の方にも触れたNode.jsが提供しているものとなる。なので自分で定義していないにも関わらず使用できる
これらは一般的に「定義せずともどこからでも使えるもの」という意味でグローバルオブジェクトなどと呼ばれたりする