1: スコープ
(関数() {
var a = b = 5;
})();
console.log(b);
コンソールには何が出力されますか?
答え
上記のコードは 5 を出力します。
この問題のコツは、変数宣言が 2 つありますが、変数宣言はキーワード var を使用して宣言されていることです。関数のローカル変数であることを示します。対照的に、b はグローバル変数になります。
この質問のもう 1 つのトリックは、厳密モードを使用しないことです ('use strict';)。厳密モードが有効な場合、コードは ReferenceError: b が定義されていません を発生させます。厳密モードでは、グローバル変数宣言を実装するために明示的な指定が必要であることに注意してください。たとえば、次のように書く必要があります:
(関数() {
'厳密な使用';
var a = window.b = 5;
})();
console.log(b);
2: 「ネイティブ」メソッドを作成します
文字列オブジェクトのrepeatify関数を定義します。整数 n で渡されると、文字列を n 回繰り返した結果が返されます。例:
console.log('hello'.repeatify(3));
hellohellohello を出力する必要があります。
答え
可能な実装は次のようになります:
String.prototype.repeatify = String.prototype.repeatify 関数(回) {
var str = '';
for (var i = 0; i
}
戻り値 str;
};
現在の問題では、JavaScript の継承とプロトタイプに関する開発者の知識がテストされます。これにより、開発者が組み込みオブジェクトを拡張する方法を (拡張すべきではない場合でも) 知っていることも検証されます。
ここでもう 1 つ重要な点は、既に定義されている機能をオーバーライドしない方法を知っておく必要があるということです。関数定義が以前に存在しなかったことをテストします:
String.prototype.repeatify = String.prototype.repeatify || 関数(回) {/* ここにコード */};
このテクニックは、JavaScript 関数に互換性を持たせるように求められる場合に特に役立ちます。
3: ステートメントのホイスティング
このコードを実行すると、どのような結果が出力されますか。
関数 test() {
console.log(a);
console.log(foo());
var a = 1;
関数 foo() {
2 を返します;
}
}
10: テスト();
答え
このコードの結果は未定義で 2 です。
その理由は、変数と関数の宣言が前方に移動 (関数の先頭に移動) されますが、変数には値が代入されないためです。したがって、変数を出力するとき、変数は関数内に存在します (宣言されています) が、まだ未定義です。つまり、上記のコードは次のコードと等価です:
関数 test() {
var a;
関数 foo() {
2 を返します;
}
console.log(a);
console.log(foo());
a = 1;
}
テスト();
4: JavaScript での動作
次のコードは何を出力しますか?答えてください。
var fullname = 'ジョン・ドゥ';
var obj = {
フルネーム: 'Colin Ihrig'、
; 小道具: {
フルネーム: 'アウレリオ デ ローザ'、
getFullname: function() {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());
答え
答えはアウレリオ・デ・ローザとジョン・ドゥです。その理由は、関数内での動作は、JavaScript 関数の定義方法だけでなく、呼び出し方法と定義方法に依存するためです。
最初の console.log() 呼び出しでは、obj.prop オブジェクトの関数として getFullname() が呼び出されます。したがって、コンテキストは後者を参照し、関数はオブジェクトのフルネームを返します。対照的に、getFullname() がテスト変数に割り当てられている場合、コンテキストはグローバル オブジェクト (ウィンドウ) を参照します。これは、test がグローバル オブジェクトのプロパティとして暗黙的に設定されるためです。このため、関数はウィンドウの完全名を返します。これは最初の行で定義された値です。
5: call() と apply()
ここで、最後の console.log() で Aurelio De Rosa が出力されるように、前の問題を解決しましょう。
答え
この問題は、call() または apply() を強制的に使用して関数コンテキストを変更することで変更できます。以下では call() を使用しますが、この場合 apply() は同じ結果を出力します:
console.log(test.call(obj.prop));

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
