ホームページ ウェブフロントエンド jsチュートリアル JavaScript応用スキル集【おすすめ】_javascriptスキル

JavaScript応用スキル集【おすすめ】_javascriptスキル

May 16, 2016 pm 06:47 PM
javascript 応用のヒント

ブール型に変換
JavaScript のすべての値は、次のように暗黙的にブール型に変換できます。
コードをコピー コードは次のとおりです:
0 == false; // true 1 == true; // true '' == false // true null == false // true
これらの値はブール型ではありません。
そこで、比較に 3 つの等号を使用すると:
コードをコピー コードは次のとおりです:
0 = = = false; // false 1 === true; // false '' === false // false null === false // false
ここで問題となるのは、他の型をブール型に変換する方法です。 🎜 >
コードをコピーします コードは次のとおりです:
!!0 === false; // true !!1 == = true; // true !!'' === false // true !!null === false // true


パラメータに初期値を代入しますJavaScript には繰り返しはありません。ロードの概念はありますが、JavaScript の関数のパラメーターは、呼び出し時に 1 つのパラメーターが欠落している場合、
未定義 に置き換えられます。
コードをコピーします コードは次のとおりです。
function plus(base, added) { return Base added } plus( 2); // NaN
この例では、
plus(2)plus(2, unknown) は等価であり、2 unknown は NaN です。 ここでの問題は、2 番目のパラメータが渡されない場合、それに初期値を割り当てる方法です。
コードをコピーします コードは次のとおりです。 function plus(base, added) { added = added || return Base added ; } plus(2); // 3 plus(2, 2); // 4
これは実際に当てはまります。これには特別な処理が必要なようです:

Copy code コードは次のとおりです: function plus( Base, added) { added = added || (added === 0 ? 0 : 1);

他の人があなたのページを Iframe にロードできないようにします。 >
Web サイトが非常に人気になると、多くの Web サイトがあなたの Web サイトにリンクしたり、IFrame を介して自分の Web ページに Web ページを埋め込みたいとさえ思うようになります。 これは面白くないので、この行動を止めるにはどうすればよいでしょうか?

コードをコピー コードは次のとおりです。 if(top !== window) { top.location.href = window.location .href; } このコードは各ページの
head
に配置する必要があります。実際に使用している人がいるかどうかを知りたい場合は、Baidu を参照してください。ブログすれば分かるよ。

文字列置換

String.prototype.replace 関数は、C# や Java に精通しているプログラマーを混乱させることがよくあります。
例:
コードをコピーします コードは次のとおりです: 'Hello world, hello world'.replace ('world' , 'JavaScript'); // 結果は「Hello JavaScript, hello world」です。
replace
関数の最初のパラメータは正規表現です。
最初のパラメータとして文字列を渡すと、最初に見つかった一致する文字列のみが置換されます。 この問題を解決するには、正規表現を使用できます:

コードをコピー コードは次のとおりです: ' Hello world , hello world'.replace(/world/g, 'JavaScript') // 結果は "Hello JavaScript, hello JavaScript" になります。 置換時に大文字と小文字を区別するように指定することもできます。
コードをコピーします コードは次のとおりです: 'Hello world, hello world'.replace(/hello/gi, 'Hi') / / 結果は「Hi world, Hi world」です

引数を配列に変換する
関数内の事前定義変数 arguments は実際の配列ではなく、配列のようなオブジェクトです。
length 属性はありますが、スライス、プッシュ、ソートなどの関数はありません。そこで、引数 にこれらにのみ使用できる関数を持たせる方法配列?
言い換えると、引数を実数の配列にするにはどうすればよいでしょうか?
コードをコピー コードは次のとおりです。
function args() { return [].slice.call(arguments, 0); } args(2, 5, 8); // [2, 5, 8]


parseInt 関数の 2 番目のパラメータを指定します
parseInt 文字列を整数に変換するために使用されます。構文は次のとおりです:
コードをコピーします コードは次のとおりです:
parseInt( str, [radix])
2 番目のパラメーターはオプションで、最初のパラメーターの 10 進数を指定するために使用されます。
2 番目のパラメータが渡されない場合は、次の規則に従います:
-> str が 0x で始まる場合、16 進数とみなされます。
->str が 0 で始まる場合、8 進数とみなされます。
-> それ以外の場合は、10 進数とみなされます。
ルールを知らないと、次のコードは混乱するでしょう:
コードをコピーします コードは次のとおりです:
parseInt('08'); // 0 parseInt('08', 10); // 8

したがって、安全上の理由から、parseInt の 2 番目のパラメータを指定する必要があります。

配列から要素を削除します
おそらく delete で実行できます:
コードをコピー コードは次のとおりです。
var arr = [1, 2, 3, 4, 5] // [1, unknown, 3, 4, 5]
ご覧のとおり、delete は実際には配列内の要素を削除できません。削除された要素は unknown に置き換えられ、配列の長さは変わりません。

実際、以下に示すように、Array.prototype の splice 関数を使用して配列内の要素を削除できます。
コピー コード コードは次のとおりです。
var arr = [1, 2, 3, 4, 5]; // [1]; , 3 , 4, 5]


関数もオブジェクトです
JavaScript では、関数にプロパティを追加できるため、関数もオブジェクトです。
例:
コードをコピー コードは次のとおりです。
function add() { return add.count ; } add. count = 0; add(); // 1 add() // 2
add 関数に追加しました。 を使用して、この関数が呼び出された回数を記録します。 もちろん、これはよりエレガントな方法でも実現できます:

コードをコピー コードは次のとおりです: 関数 add() { if(!arguments.callee.count) { argument.callee.count = 0; } return argument.callee.count } // 0 add(); (); / / 2
arguments.callee
は現在実行中の関数を指します。

配列の最大値

数値でいっぱいの配列の最大値を見つける方法は、ループで簡単に実行できます:
コードをコピーします コードは次のとおりです: var arr = [2, 3, 45, 12, 8]; var max = arr[ 0]; for (var i in arr) { if(arr[i] > max) { max = arr[i] } } max; 他の方法はありますか? JavaScript には数値を処理するための Math
オブジェクトがあることは誰もが知っています:
コードをコピー
コードは次のとおりです。 Math.max(2, 3, 45, 12, 8) // 45 ;次に、次のように配列内の最大値を見つけることができます:
コードをコピー コードは次のとおりです:
var arr = [2, 3, 45, 12, 8]; Math.max.apply(null, arr); // 45


console.log を追加します。 IE の関数
Firefox では、Firebug のサポートにより、コンソールに情報を記録するために console.log をよく使用します。
ただし、現時点では console オブジェクトがまったくないため、このアプローチでは IE で JavaScript を実行できなくなります (Firefox で Firebug が有効になっていない場合も同様です)。
この状況の発生を防ぐには、次のヒントを使用できます:
コードをコピー コードは次のとおりです:
if ( typeof(console) === '未定義') { window.console = { log: function(msg) { alter(msg) } } console.log('デバッグ情報');


未定義 は JavaScript の予約キーワードですか? のように見えますが、実際には、未定義は JavaScript のキーワードではありません:
コードをコピー コードは次のとおりです。
var unknown = 'Hello'; // 'Hello'
このコードは奇妙に見えるかもしれませんが、
unknown は単なる事前定義された変数です。 。 注: JavaScript プログラムではこれを決して行わないでください。このトリックは、これが事実であることを示すだけです。



変数が未定義かどうかを判断します変数は次の 2 つのケースで未定義です。
1. 変数は宣言されていますが、値が割り当てられていません
コードをコピーします コードは次のとおりです:
var name; // true
2.これは宣言されていません。 変数
コードをコピー コードは次のとおりです。
name2 === 未定義; // エラー– name2 が定義されていません
2 番目のケースでは、エラーがスローされます。そこで、エラーを生成せずに変数が未定義であるかどうかを判断したらどうなるでしょうか。
一般的なメソッドを以下に示します。
コードをコピー コードは次のとおりです。
typeof(name2) = = = 'unknown'; // true


画像のプリロード 画像のプリロードは、後ですぐに表示できるように、ページ上に存在しない画像をロードすることです。 JavaScript を使用して。
たとえば、マウスが画像上に移動したときに別の画像を表示したい場合:
コードをコピーします コードは次のとおりです。 :
var img = new Image(); img.src = "クロック2.gif";
コードをコピー コードは次のとおりです:
では、画像のセットを読み込むにはどうすればよいでしょうか?次のコードを考えてみましょう:
コードをコピー コードは次のとおりです:
var source = ['img1.gif', 'img2.gif ']; var img = new Image(); for(var i = 0; i ループが発生したときに他の画像をプリロードする時間がないため、最後の画像のみをロードできます。
したがって、正しい書き方は次のようになります:
コードをコピー コードは次のとおりです:
var source = ['img1.gif ','img2.gif']; for(var i = 0; i

クロージャ
クロージャは、関数内のローカル変数を指します。この変数は、関数が戻ったときにも使用できます。
関数内で別の関数を定義する場合、有名な例としてクロージャーを作成します。
コードをコピー コードは次のとおりです。
function add(i) { return function() { return i; }; } add(2).toString(); // "function () { return i; }" )(); // 3
add(2) は、外部関数のローカル変数 i を取得できる関数です。
参考記事


プライベート変数
私たちは、変数がプライベート変数であるかどうかを示すためによく命名規則を使用します (最も一般的に使用されるのは、示す) :
コードをコピー コードは次のとおりです:
var person = { _name: '', getName: function () { return this ._name || '未定義'; } }; // "未定義"
アンダースコア接頭辞はプライベート変数として使用されますが、他の開発者も使用できます。このプライベート変数を引き続き呼び出します:
コードをコピー コードは次のとおりです。
person._name; // ""
では、JavaScript で実際の人物を作成する方法 プライベート変数についてはどうですか?
主なトリックは、匿名関数とクロージャを使用することです。
コードをコピーします コードは次のとおりです。
var person = {} (function() { var _name = '; '; person .getName = function() { return _name || '未定義' })(); // "未定義" typeof(person._name); 🎜>


JavaScript にはブロックレベルのコンテキスト (スコープ) がありません JavaScript のブロックレベルのコードにはコンテキストがありません。実際、独自のコンテキストを持つのは関数だけです。
コードをコピーします コードは次のとおりです:
for(var i = 0; i コンテキストを作成したい場合は、自己実行の匿名関数を使用できます:
コードをコピーコードは次のとおりです。
(function (){ for(var i = 0; i

奇妙な NaNNaN は、値が数値ではないことを示すために使用されます。
NaN はどの値 (それ自体も含む) とも等しくないため、JavaScript で NaN は奇妙な動作をします。
コードをコピー コードは次のとおりです。
NaN === NaN // false
。コードは一部の人々を狂わせる可能性があります:
コードをコピー コードは次のとおりです:
parseInt('hello', 10) ; // NaN parseInt('hello', 10) == NaN; // false parseInt('hello', 10) === NaN; // では、値が NaN であるかどうかを確認するにはどうすればよいでしょうか? > window.isNaN を使用して判断できます:

コードをコピー コードは次のとおりです: isNaN(parseInt(' hello', 10)); // true
True 値と False 値

JavaScript のすべての値は暗黙的にブール型に変換できます。 条件判定では、
null、unknown、NaN、0、''、false

の値は自動的に false に変換されますので、次の複雑な判断を行います。
コードをコピー コードは次のとおりです。 if(obj === unknown || obj === null) { } これを行うだけです:
コードをコピーします コードは次のとおりです:
if(!obj) { }


引数の変更
たとえば、引数に値を追加します:
コードをコピーします コードは次のとおりです。
function add() { argument.push('new value') } add();
arguments は実際の配列ではなく、push メソッドがないため、push は関数ではありません は失敗します。
解決策:
コードをコピー コードは次のとおりです。
function add() { Array.prototype.push .call (arguments, '新しい値'); } add()[0] // "新しい値"


ブール値
ブール型の値 (リテラル) を生成するために使用される、ブール型を関数と考えることができます。
コードをコピー コードは次のとおりです。
Boolean(false) === false; // true Boolean('') === false; // true
つまり、Boolean(0) !!0 は同等です。
Boolean をコンストラクターとみなして、new を通じて Boolean 型オブジェクトを作成することもできます。
コードをコピーコードは次のとおりです:
new Boolean(false) === false; // false new Boolean(false) == false; // true typeof(new Boolean(false)); typeof(Boolean(false)); // "boolean"


高速な文字列連結
短い文字列を連結するために をよく使用します。 1 つの長い文字列ですが、ほとんどの場合はこれで問題ありません。
しかし、連結する必要がある文字列が多数ある場合、このアプローチでは、特に IE ではパフォーマンスの問題が発生します。
コードをコピーします コードは次のとおりです。
var startTime = new Date(); '; for (var i = 0; i
コードをコピーします コードは次のとおりです。
var startTime = new Date(); var arr = []; i Firefox が表示されます。

演算子が最適化されているようですが、IE は愚かな動作をします。
単項演算子
JavaScript では、文字列の前に単項演算子 " " を使用できます。これにより文字列が数値に変換され、変換が失敗した場合は NaN が返されます。
コードをコピーします コードは次のとおりです。 2 '1'; // "21" 2 ( '1' ); // 3
文字列以外の前で使用した場合、次の順序で変換が試行されます。
valueOf() を呼び出し、toString() を呼び出して数値に変換します
    コードをコピーします コード new Date; // 1242616452016 new Date === new Date().getTime(); // true new Date() === Number(new Date) // true
    参考記事


    encodeURI と encodeURIComponent
    window.encodeURI 関数を使用して URL をエンコードしますが、次の文字はエンコードされません。 「:」、「/」、「;」、「?」。window.encodeURIComponent は上記の文字をエンコードします。
    例で説明します。

    コードをコピーします コードは次のとおりです。 'index.jsp?page =' encodeURI('/page/home.jsp'); // "index.jsp?page=/page/home.jsp" 'index.jsp?page=' encodeURIComponent('/page/home.jsp'); // "index.jsp?page=/page/home.jsp"
    したがって、URL をエンコードするときに encodeURIComponent を選択することがよくあります。


    table.innerHTML は IE の読み取り専用属性です
    多くの場合、次のようなノードの innerHTML 属性を通じてノードを埋めます。 >
    コードをコピーします コードは次のとおりです。
    >
    コードをコピーします コードは次のとおりです: document.getElementById('container1').innerHTML = "Hello World !";
    ただし、IE で
    table.innerHTML
    を設定するとエラーが発生します:
    コードをコピー コードは次のとおりです:
    コードをコピーします コードは次のとおりです: // Firefox では正常に動作しますが、IE では動作しません document.getElementById('table1').innerHTML = "
    < ;/tr>"; 実際、IE では、table、thead、tr、select およびその他の要素の innerHTML 属性はすべて読み取り専用です。
    テーブルを動的に作成する場合、次のような実行可能な方法が提供されます:

    コードをコピーします コードは次のとおりです。 :
    コードをコピーします。 document.getElementById('table1').innerHTML = "
    HelloWorld!
    "; 0.1 0.2 != 0.3
    JavaScript は小数を浮動小数点数として扱うため、丸め誤差が発生する可能性があります。例:

    コードをコピー
    コードをコピー
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

    WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

    WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

    WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

    WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

    WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

    JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

    JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

    JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

    JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

    簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

    JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

    JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

    使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

    JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

    JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

    See all articles
    HelloWorld!