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 Element フロントエンドアプリケーション開発開発環境の準備

目次概要1. 必要なソフトウェア環境を開発する1) VSコードのインストール2) ノード開発環境をイ...

MySql エラー 1698 (28000) の解決策

1. 問題の説明: MysqlERROR1698 (28000) の解決方法、新しくインストールされ...

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

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

CSS ボックスを中央揃えするためのよく使われるいくつかの方法 (要約)

最初のもの: CSSの位置プロパティの使用 <スタイル タイプ="text/css&...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

Windows プラットフォームでの MySQL のインストールと設定方法と注意事項

2.1、msiインストールパッケージ2.1.1、インストール特に重要なのは、インストール前に、元の ...

VUE ユニアプリカスタムコンポーネントについての簡単な説明

1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...

Tomcat のセッションと Cookie の詳細な説明

序文HTTP はステートレスな通信プロトコルです。各リクエストは互いに独立しており、サーバーは以前の...

IE8対応のボーダー半径処理方法

canisue (http://caniuse.com/#search=border-radius)...

HTMLとXHTML、HTML4とHTML5のタグの違いについて簡単に紹介します。

HTML と XHTML の違い1. XHTML要素は正しくネストされている必要がある2. XHT...

ウェブページの背景色を制御する CSS コード

誰もが自分の Web ページの背景にふさわしい画像を見つけることに悩むことが多いと思います。これは事...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

WeChatミニプログラムのすべてのページがログインされていることを確認する方法

目次現状解決さらなる解決策やっと現状WeChat ミニプログラムには、ホームページ、個人ページ、いく...

dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明

とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければ...

NginxはLua+Redisを使用してIPを動的にブロックします

1. 背景日常的なウェブサイトのメンテナンスでは、このような要件に頻繁に遭遇します。特定のクローラー...