
この記事では、忘れられがちなJavascript ES3の機能について説明しています。 それらのいくつかは言語の奇妙なものであり、他のものは私の意見では覚えにくい特性にすぎません。 ここでは、言語の説明へのリンク(applyとcallの違いなど)を提供できるものではなく、マニュアルにはほとんど記載されていないものをここで収集しようとしました。
始める前に、この記事で証明しようとしない3つのポイントを明確にしたいと思います。
1.これらの機能がすべて忘れられているとか、本質的にそうだとか言っているわけではありません。 個人的には難しいと思います(たとえば、メモリ内で更新されないと詳細は忘れられます)。 彼らはあなたのために簡単にすることができます。 それでも、このコレクションは私だけでなく役に立つと思う。
2.言語のこれらの部分を使用する必要があると言っているのではなく、それらを知っていれば、他の開発者のコードを簡単に読むことができると主張するだけです。 それらのほとんどは有用ですが、コード内に存在することが常に最良の解決策とは限りません。
3.私はES5の機能に影響を与えません。厳密でも、一般的でも、ES6全般でもありません。 それらについては後で説明します。 説明した機能の一部は、ECMAScriptの将来のバージョンで変更または開発されていることを認めます。
それでは、始めましょう。
1. −0 = +0 = 0(または厳密なゼロは正および負のゼロに等しい)
JavaScriptの値は-0と+0で、どちらの側がゼロになったかを示します。 ただし、比較すると厳密なゼロに変換されます。
jsfiddle.net/codylindley/6phD9/lightconsole.log(-0);
2. newという単語は、コンストラクターを独立して実行できます
引数なしのコンストラクターの呼び出しは、コンストラクターの後に括弧を書くことなく、1つの新しいキーワードで実行できます。
jsfiddle.net/codylindley/nHCvx/light var Human = function(){ this.type = 'human'; console.log('I was called'); }; new Human;
3. instanceofはプリミティブでは機能しません
instanceof演算子は、文字列、数値、および論理変数に対してfalseを返します。 オブジェクト(つまり、プリミティブのラッパー)に配置されている場合、正常に機能します。 nullおよびundefinedにはオブジェクトラッパーがないことに注意してください。
jsfiddle.net/codylindley/bpJjZ/light
4. Typeof演算子-非ユニバーサルおよびエラーあり
typeofの適用可能性はプリミティブに限定されていますが、エラーもあります:(typeof null ===“ object”)== trueです。これが
、チェックの
自己記述および松葉杖の方法が最適
な理由です。
jsfiddle.net/codylindley/U64aZ/light
5. false値からのブールオブジェクトは常にtrue
console.log(!!(new Boolean(false)) )
new Boolean(new Boolean(false))-ラッパーオブジェクトを返すため、falseではありません。 そして、オブジェクト(手を見てください)は常にtrueに変換されます。 したがって、名前付きのソフィズムは、一般にコンストラクタの任意の値を指します。 そして、プリミティブ(NaN、false、0、null、undefined、および '')と式の値のみがtrue falseを作成します。
6.引数または関数パラメーター?
引数は、関数が呼び出されるときに使用されます。 関数に引数を渡します。 パラメータは、関数が定義されるときに設定されます。 したがって、パラメータは関数を定義するために使用されると言われています。 これらの単語は同じ意味で使用されますが、それらの違いを知っていると便利です。
jsfiddle.net/codylindley/8Zkdd/light var myFunction = function(x,y,z){
7.パラメーターの値を変更しても、引数の値は変更されません
たとえば、関数に配列を渡す場合、パラメーター値を変更しても元のパラメーター値は変更されません。
jsfiddle.net/codylindley/c2xb4/light var myFunction = function(parameter){ parameter = undefined;
8.関数としてブール()を呼び出すと、値がブールに変換されます
引数を指定してコンストラクターを関数(newなし)として呼び出すと、コンストラクターが論理的なものに変換されます。
jsfiddle.net/codylindley/4wQLd/light
もちろん、二重反転!!()でも同じ効果が得られます。 しかし、それは私を好きになるほど十分に表現力がありません。
jsfiddle.net/codylindley/jNPvH/light
9.新しい戻りプリミティブなしでプリミティブオブジェクトのコンストラクターを呼び出す
jsfiddle.net/codylindley/ymGmG/light
10. Object()はプリミティブのオブジェクトラッパーを作成します
他のコンストラクタとは異なり、Object()はラッパーでプリミティブをラップします。
jsfiddle.net/codylindley/tGChw/light
11.プリミティブのプロパティにアクセスするとエラーが隠される
誰が言っても、すべてがプリミティブで完全に書かれています。 読書に問題はありません。 常に未定義で読み取られることを除きます。 その理由は
、プリミティブのオブジェクト
ラッパーが作成されないためです 。
jsfiddle.net/codylindley/E7GGK/light
12. deleteは継承されたプロパティを削除しません
jsfiddle.net/codylindley/xYsuS/light var Person = function(){};
13.文字列のオブジェクトシェルは配列に似ています
文字列オブジェクトのシェルは配列のようなオブジェクトを作成するため、(つまりconsole.log(new String( 'foo')); // foo {0 = "f"、1 = "o"、2 =を出力します“ O”})、文字インデックスを使用できます(IE7-を除く)。
jsfiddle.net/codylindley/7p2ed/light
14.数値のプリミティブからプロパティへのアクセス
数値のプリミティブの後の最初のポイントは小数点として認識され、プロパティにアクセスするという意味でポイントと競合します。 しかし、2番目...
jsfiddle.net/codylindley/Pn6YT/light
15. Array.lengthは書き換え可能です。これには副作用があります
lengthプロパティを明示的に割り当てることにより、一連の未定義の値を配列の最後に追加したり、配列を短くしたりできます。
jsfiddle.net/codylindley/9Pp9h/light var myArray1 = []; myArray1.length = 3; console.log(myArray1);
16.論理演算子「||」 最初の真の値に機能します
このステートメントの左の引数の値がtrueに変換される場合、右の値は計算されません。これは比fig的に「短絡」と呼ばれます(短絡、短絡、またはこの場合-「短絡」)。 実際、最初の値でtrueが検出されると、右側の関数や式には触れず、非表示のセッターの値は変更されません。
jsfiddle.net/codylindley/NUKKZ/light
17.論理演算子「&&」は最初のfalse値まで実行されます
同様に、逆論理値を使用すると、最初のファウルが含まれるまで実行されます。
jsfiddle.net/codylindley/DEbk5/light
18. nullを使用する場合と、未定義の場合
簡単に言えば、nullは「なし」の値であり、undefinedは非常に「なし」そのものです。つまり、プリミティブ、オブジェクト、プロパティ、空の参照がありません。 通常の実践では、開発者はnullを使用して明示的に値の欠如を示し、undefinedを使用してJavascriptに任せて「発生しなかった」ことを示さないことをお勧めします。 プログラムでヌルを使用する場合、スクリプトメッセージと意識的なヌル設定の痕跡を区別します。
19.デフォルトでは未定義
undefinedは、値がないことを示します。 次の例では、値を作成しません(未定義を返します)。
jsfiddle.net/codylindley/3buPG/lightjsfiddle.net/codylindley/3buPG/light
20.演算子ができない場合に式が機能する
式は値を返し、演算子はアクションを実行します。これは、条件式のifと3項論理演算子の違いの例で明確に示されています。 関数パラメーターを指定するときに「If」が機能しない場合は、条件式を使用できます。
jsfiddle.net/codylindley/SSh68/light var verify = true;
21.演算子の場所++および-
演算子が接頭辞(変数の前)である場合、値が最初に変更され、次に式に返されます。 後置の場合-初期値は式に返されますが、変数は返される前に変更されます。
jsfiddle.net/codylindley/QzG9w/light http: