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 登録とアクティベーションの詳細なチュートリアル

推薦する

VMware 仮想マシンに Android x86 をインストールする方法

アプリをテストしたいが、それを携帯電話で実行したくない場合があります。この場合、仮想マシンを使用して...

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

MySQL データベースで UTF-8 エンコードを設定する方法

/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...

Linux の crontab タスク スケジューリングの簡単な分析

1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...

MySQL DATEDIFF 関数を使用して 2 つの日付間の時間間隔を取得する方法

説明する2 つの日付間の時間間隔を返します。文法DateDiff(間隔、日付1、日付2 [、週の最初...

JS 日付コントロール My97DatePicker の基本的な使い方

My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...

Windows 64 ビットでの MySQL 8.0.13 のインストールと設定方法のグラフィック チュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...

便利なモバイルスクロールプラグイン BetterScroll

目次スクロールをスムーズにするBetterScrollのスクロール体験慣性ローリングエッジリバウンド...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

JS を使用してバイナリ ツリー トラバーサル アルゴリズムのサンプル コードを実装する

目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...

要素のel-tree複数選択ツリー(チェックボックス)親子ノードの関連付けが関連付けられていません

属性チェック-厳密公式ドキュメントでは、チェックボックスが表示されるときに親項目と子項目を互いに関連...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

koa2 サービスに SSL を設定する方法

I. はじめに1: SSL証明書私のドメイン名は Tencent Cloud にあります。第 3 レ...

オブジェクトのプロパティを反復処理する際の TypeScript の問題

目次1. 問題2. 解決策1. オブジェクトをanyとして宣言する2. オブジェクトのインターフェー...