【JavaScript入門】JavaScriptの挙動 – 巻き上げ(hoisting)

JavaScript
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

JavaScriptの基礎として、JavaScript独特の挙動をみていきます。

JavaScriptは他のプログラミング言語には見られない変数の巻き上げ(hoisting – ホイスティング)というものがあります。

ここを押さえておかないと、コードを実行した時に思ったように動かなかったり、その原因がわからなかったりします。

ここではこの巻き上げ(hoisting)について順に見ていきましょう。

スポンサーリンク

巻き上げ(hosting)

先ほども触れましたが、JavaScriptは他のプログラミング言語には見られない変数の巻き上げ(hoisting)というものがあります。

JavaScriptでは、変数や関数の宣言をスコープ内の一番上にもってくることを巻き上げ (hoisting) といいます。

関数の巻き上げ

具体的なコードで見て行きましょう。

次のコードは2019年が変数で指定した年(誕生年)から何年経っているかという年齢計算のコードです。

単に2019から指定の西暦を引いてるだけの関数です。実行すれば「19」になるのはわかると思います。

これを次のように書き換えてみます。

先ほどのコードと違い、呼び出しの関数を一番上に置いています。

この形だと他のプログラミング言語ではほぼエラーになりますが、実行するとこうなります。

このように、関数の宣言を一番上のスコープに持ってきても実行することができます。

関数の宣言では巻き上げができましたが、関数式は巻き上げされないため、次のようなコードではエラーになります。

実行するとこうなります。

関数式の場合は、コメントアウトして記述しているように上側ではなく下側に記述して実行します。

変数の巻き上げ

次は変数の巻き上げを見てみましょう。

ここで出てくる関数foo()は適当なものです。単に変数を表示するだけの関数です。

このコードを実行するとJavaScriptコンソールには次のように表示されます。

一番上のconsole.log()は変数宣言の前なのでundefinedになっています。

関数を定義した後に、foo();で呼び出した最初のconsole.log()は、外側で定義したグローバル変数の23が出力されそうですが、そうはなりません。またエラーではなくundefinedになります。これは、関数内で宣言した変数が関数内のどこで宣言しても関数内の先頭に巻き上げられます。これで、変数の宣言のみ(数値部分は別)が巻き上げられて、var age;があるという意味合いになります。2つ目のconsole.log()は30が入って出力されています。

foo();を呼び出した後の最後のconsole.log()は、一番上で宣言した変数を出力しています。

スポンサーリンク

まとめ

JavaScript独特の挙動の巻き上げ(hoisting – ホイスティング)を見てきました。

巻き上げは他のプログラミング言語には見られない動きで、ここを押さえておかないと、コードを実行した時に思ったように動かなかったり、その原因がわからなかったりします。

関数の実行は巻き上げが行われますが、関数式は同様にはできずエラーになります。

関数内での変数の宣言は、どの位置で行っても関数内の一番上で宣言した形になって値を代入しない限りundefinedとして扱われます。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

JavaScript
スポンサーリンク
CodeGraffitiをフォローする

とにかく進め!Pythonプログラミング入門 〜 コードグラフィティ
タイトルとURLをコピーしました