JSの基本概念の詳細な紹介

JSの基本概念の詳細な紹介

多くの人は、 Javascriptに取り組む前に、 Javascript理論的な側面を無視してしまいます。これらの概念は、 Javascriptアプリケーションを構築するときに取るさまざまなパスとパターンを理解するのに役立ちます。これらのパターンはJS Landのすべてのフレームワークに存在するため、言語自体を学習する前にこれらの概念を理解しておくことは理にかなっています。

1. JSの特徴

1.1 マルチパラダイム

Javascript 、手続き型、オブジェクト指向型、イベント駆動型の関数型プログラミングをサポートします。 JSのオブジェクト指向プログラミング スタイルを習得することは非常に有益です。

オブジェクト指向プログラミングは、プログラマーがソフトウェア アプリケーションのコンポーネントをより簡単に視覚化するのに役立ちます。さらに、 Typescript (Javascript with Types) を学習すると、プログラマーは業界最高のデザイン パターンを簡単に実装できるようになります。これらの設計パターンは、ソフトウェア プログラミングで発生する最も一般的な問題を最も効率的な方法で解決するために使用されます。

この汎用性により、 Javascript非常に扱いやすく、かつ非常に強力になります。

1.2 説明

Javascript 、プログラムを一度にすべて読み取るのではなく、行ごとに解釈するという点でC/C++とは異なります。つまり、 JS C/C++などのコンパイル言語よりも遅くなります。

警告: Javascriptは実行時に非常に反応性の高い言語として知られており、エラーのトラブルシューティングが非常に困難になります。

しかし、時間と練習を重ねれば、スムーズに走る方法を学ぶことができます。最も一般的なエラーは、変数がNULL値を返すことです。このような問題が発生した場合は、 Stack Overflowにアクセスしてください。エラーがいかにひどいものであっても、そのエラーに遭遇したのはあなたが初めてではないことは間違いありません。プロジェクトの開発中は、 console.log()頻繁に使用することもお勧めします。これにより、プログラムのライフサイクル内で変数が削除された可能性がある正確な瞬間を特定できるようになります。

1.3 シングルスレッド

Javascript一度に 1 つのタスクしか実行できません。タスクの種類に応じて、異なるタスクを異なるキューに登録します。
最も抽象的な意味では、 Javascript基本的に同期タスクと非同期タスクをグループ化し、それらを別々にキューに入れます。

同期タスクは、検出されるとすぐに処理される、つまりすぐに実行されるステートメントです。これらのタスクには、ログ記録ステートメント、変数宣言、条件チェックなどが含まれます。

非同期タスクには、出力を返すのに可変の時間がかかる可能性があるタスクが含まれます。非同期タスクの例としてはWeb APIから情報を要求することが挙げられます。

さらに、 JavascriptにはPromisesと呼ばれるJS Featureを処理するJob Queueがあります。

この Web ページを右クリックして [検査] タブをクリックすると、実際にJavascriptのシングル スレッドの性質を確認できます。次に、開いたウィンドウの「コンソール」タブに移動します。次のコードを入力して Enter キーを押します。 \

一方で(true) {}


このページは完全に応答していないことがわかります。これは、このページのJavascript 、上で実行した無限 while ループの実行でビジー状態になっているためです。

1.4 ノンブロッキング

非同期タスクについては以前に説明しました。 JS はシングルスレッド環境で実行されるため、デフォルトでは待機しません。

非同期コード ブロックは、プログラム内のコードの位置に関係なく、すべての同期コード ブロックの実行が完了した後にのみ実行されます。

console.log("私は最初のステートメントです")

タイムアウトを設定する(()=> {
console.log("私は2番目のステートメントです")
},1000)

console.log("私は3番目のステートメントです")

ここでconsole.log()はステートメントをコンソールに記録し、 setTimeout()関数は 1 秒後に 2 番目のステートメントを実行します。

出力を確認するとき

私は最初の声明です 私は3番目の声明です 私は2番目の声明です

3 番目のステートメントが 2 番目のステートメントの前にログに記録されていることがわかります。これは、JS が同期および非同期コード ブロックを処理する固有の方法によるものです。

1.5 上級

JavaScriptは高級言語です。高水準言語というのは、単に人間が話す言語に近いというだけかもしれません。高水準言語は、プログラマーが構築しようとしているものをより適切に表現するのに役立つより多くの機能を提供します。

このJavascriptの高度な性質により、 Webのクライアント側部分を最適に処理できます。これまでのJSの大きな制限の 1 つは、クライアント側でしか提供できず、ほとんどのサーバー側言語のようにファイル操作ができなかったことです。

しかし、 NodeJS状況は変わり、開発者はJavascriptを使用してバックエンド サーバーを構築できるようになりました。したがって、ソフトウェア開発者は 1 つの言語のみを使用して、サーバー側とクライアント側の両方で作業できます。これにより、フルスタックエンジニアが増加しました。

1.6 動的型付け

Javascriptも動的型付け言語です。つまり、変数のデータ型を指定する必要があるCとは異なり、 Javascriptではtype-inferenceを使用して、変数が保持するデータの型を自動的に検出できます。 \

// C では変数にデータ型が必要です。 データ型をある型から別の型に変更するには、型変換 int a = 5; を使用する必要があります。
char b = "a";
フロートc = 7.036;


Javascriptでは、変数や定数を宣言するためにそれぞれletconstを使用します。 \

a = 5とする
コンソールログ(a) // 5
a = 'こんにちは世界'
console.log(a) // こんにちは世界

const b = 'JS はクールだ' 
console.log(b) // JS はクール b = '気が変わった'
console.log(b) // エラー: const は変更できません

型推論は使いやすさからプラスポイントのように思えますが、機能として型の安全性を必要とする大規模なプロジェクトではすぐに欠点になります。

このため、大規模なプロジェクトでは、型、インターフェース、その他のさまざまな機能を提供するJavascriptラッパーであるTypeScriptが使用されます。

2. 学習戦略

JS Landに落ち着くまでにはしばらく時間がかかりましたが、 ExpressReactJSのようなフレームワークを学習するためのMinimum Requirementsの簡単なチェックリストがあります。

まず、これらのフレームワークを急いで学ばないでください。 Vanilla Javascript習得するには、ある程度の時間を費やす必要があります。

3. 基礎知識

  • 変数と定数
  • 条件ブロック ( if-else )
  • ループ ( forwhileforEach )
  • Switch Caseケース
  • Functions

上級セクション(最低要件)

  • 非同期/待機
  • Promises
  • Javascriptのクラス
  • Rest / Spread構文
  • 配列/オブジェクトイテレータ
  • 配列の分割
  • モジュール(インポート、エクスポート)

プロジェクトを構築しながら学習を続けると、すぐに言語をしっかりと理解できるようになります。

JS の基本概念の詳細な紹介に関するこの記事はこれで終わりです。より関連性の高い JS の基本概念については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript イベントの概念の詳細な説明 (静的登録と動的登録の区別)
  • JavaScript におけるスコープチェーンの概念と使用法
  • JavaScript オブジェクト指向のコア知識と概念の要約
  • node.js におけるプロセスの概念と child_process モジュールの使用例
  • JavaScript におけるクロージャの概念と使用法の分析

<<:  Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

>>:  Navicat for MySQL 15 登録とアクティベーションの詳細なチュートリアル

推薦する

VUE レンダリング機能の使い方と詳細な説明

目次序文レンダリングの役割レンダリング機能の説明レンダリングとテンプレートの違いレンダリング例要約す...

MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明

MySQL のCAST()およびCONVERT()関数を使用すると、ある型の値を取得し、別の型の値を...

Docker 起動時の ES メモリ オーバーフローの解決方法

jvm.options ファイルを elasticsearch 構成に追加し、スタック サイズを変更...

VMware15.5でcentos8.1をインストールし、物理メモリが不足する問題に対処する最も完全なチュートリアル

1. 仮想マシンの準備1. 新しい仮想マシンを作成する 2. 仮想マシンのカスタマイズを選択する 3...

Dockerを使用してSpring Bootプロジェクトをデプロイする手順

目次シンプルなSpringbootプロジェクトを作成する1. pom.xmlでSpring Boot...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

Vue+ElementUI で超大規模なフォーム例を処理する方法

最近、社内の業務調整により、以前の超長文のロジックが大幅に変更されたため、リファクタリングする予定で...

mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

Vue3.0 における Ref と Reactive の違いの詳細な分析

目次参照と反応参照反応的RefとReactiveの違いshallowRef と shallowRea...

div の水平レイアウトを両側に揃える 3 つの方法

この記事では、主に、div の水平レイアウトの両側の配置を実装する 3 つの方法を紹介し、それらを共...

Dayjs を使用して Vue で一般的な日付を計算する方法

vue を使用してプロジェクトを開発する場合、フロントエンドでは次のような日付と時刻を計算する必要が...

Redhat 8.0 システムのインストール方法に関するグラフィック チュートリアル (初心者には必須)

目次1. はじめに2. インストール01. 新しい仮想マシンを作成する02. システムをインストール...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

CSS3 弾性拡張ボックスの詳細な説明

使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...

5つのクールで実用的なHTMLタグと属性の紹介

実はこれもクリックベイトのタイトルであり、「派手」とは言えません。ただ私が無知で、こうしたラベルを見...