ホームページ  >  記事  >  ウェブフロントエンド  >  使ってはいけないJavaScript構文12種類_基礎知識

使ってはいけないJavaScript構文12種類_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:17:40878ブラウズ
1.==
JavaScript には 2 つの等価演算子のセットがあり、1 つは == と !=、もう 1 つは === と !== です。前者は値の等しいかどうかだけを比較しますが、後者は値に加えて型が同じかどうかも比較します。
前者のグループは使用せず、常に === と !== のみを使用してください。 == はデフォルトで型変換を実行するため、ルールを覚えるのは非常に困難です。信じられない場合は、次の 5 つの判定の値が真か偽かを答えてください:
false == 'false'
false == 未定義
false == null
null == 未定義
0 == ''
最初の 3 つは false で、最後の 2 つは true です。

2.with
with の本来の目的は、キーボード入力を減らすことです。たとえば、
obj.a = obj.b;
obj.c =
は、
と省略できます。 🎜> コードは次のとおりです:
with(obj) {
a = b;
c = d; 🎜>
しかし、実際の操作中、インタプリタはまず obj.b と obj.d が存在するかどうかを判断し、存在しない場合は、次にグローバル変数 b と d が存在するかどうかを判断します。これは非効率性につながり、事故につながる可能性があるため、with ステートメントは使用しないことをお勧めします。

3.eval

eval は文字列を直接実行するために使用されます。このステートメントも、パフォーマンスとセキュリティの問題があり、コードが読みにくくなるため、使用しないでください。
eval でできることは、eval なしでも実行できます。たとえば、 eval("myValue = myObject." myKey ";"); は、ajax 操作によって返される json 文字列と同様に、
myValue = myObject[myKey]; として直接記述できます。 、公式 Web サイトを使用できます。 json_parse.js によって提供されるパーサーが実行されます。


4.Continue

このコマンドの機能はループの先頭に戻ることですが、ループは先頭に戻ります。したがって、適切に構築することで、このコマンドの使用を完全に回避でき、効率が向上します。

5.switch
switch 構造内の case ステートメントは、break、return、throw が発生しない限り、デフォルトで順次実行されます。


コードをコピー
など、この機能を利用することを好むプログラマーもいます。コードは次のとおりです: switch( n) { case 1: case 2:
break;
}


このように書くと間違いが発生しやすく、見つけるのが困難です。したがって、スイッチの貫通を避け、場合によってはブレークを追加することをお勧めします。



コードをコピー
コードは次のとおりです。 switch(n) { case 1: ブレーク
ケース 2:
ブレーク
}


6. 単一行のブロック構造
if、while、do、for はすべてブロック構造のステートメントですが、単一行のコマンドも受け入れることができます。たとえば、
if (ok) t = true;
は、
if (ok)
t = true; と書かれていても、コードを読むのに役立ちません。将来ステートメントを追加するときに間違いを犯しやすくなります。コマンド行が 1 行のみかどうかに関係なく、中括弧を追加することをお勧めします。
if (ok){
t = true;
}


7. そして -- インクリメント演算子とデクリメント演算子 -- から直接来ます。 C 言語では、表面的にはコードを非常にコンパクトにできますが、実際にはコードがより複雑でわかりにくくなります。したがって、コードをきれいにし、読みやすくするために、これを使用しない方がよいでしょう。


8. ビット単位の演算子 JavaScript は、ビット単位の AND&、ビット単位の OR|、ビット単位の XOR^、ビット単位の NOT、左シフト << などの Java のビット単位演算子を完全に適用します。 、符号付き右シフト>>、およびゼロパディング右シフト>>>。
この演算子のセットは整数用であるため、JavaScript ではまったく役に立ちません。JavaScript 内ではすべての数値が倍精度浮動小数点数として保存されるためです。これらを使用すると、JavaScript はまずオペランドを整数に変換してから操作を実行する必要があるため、速度が低下します。さらに、「ビットごとの AND 演算子」& は「論理 AND 演算子」&& と同じであるため、混同しやすいです。


9. 関数ステートメント JavaScript で関数を定義するには、
Function foo() { }

var の 2 つの方法があります。 foo = function () { }
2 つの記述方法は完全に同等です。ただし、前者の書き方は解析中にパーサーによって自動的にコードの先頭に昇格されるため、関数を最初に定義してから使用するという要件に違反します。そのため、後者の書き方を使用することをお勧めします。関数を定義するとき。


10. 基本データ型のオブジェクトのパッケージ化 JavaScript の基本データ型には文字列、数値、ブール値が含まれており、それらはすべて対応するパッケージ化オブジェクト String、Number、ブール値。したがって、関連する値を次のように定義します。

コードをコピーします コードは次のとおりです:
new String( "Hello World");
new Number(2000);
new Boolean(false);

このように書くのは全く不要で非常に混乱しますので、使用しないことをお勧めします。
さらに、新しいオブジェクトと新しい配列の使用は推奨されませんが、{} と [] で置き換えることができます。


11.新しいステートメント JavaScript は、Lambda 関数をサポートする世界で最初に広く使用されている言語であり、本質的には Lisp に似た関数型プログラミング言語です。しかし、現在の世界では、プログラマーの 90% 以上がオブジェクト指向プログラミングを使用しています。主流に近づくために、JavaScript は妥協してクラスの概念を採用し、クラスに基づいてオブジェクトを生成できるようにしました。
クラスは次のように定義されています:

コードをコピーします コードは次のとおりです:
var Cat = function (name) {
this.name = name; new Cat('mimi');
関数を使用してクラスを生成し、new を使用してオブジェクトを生成するこの構文は、実際には非常に奇妙で直感的ではありません。全然。また、使っているとnewの追加を忘れがちで実行関数になってしまい、その後不可解にもグローバル変数がいくつか増えてしまいます。したがって、この方法でオブジェクトを作成せず、回避策を使用することをお勧めします。
Douglas Crockford は関数を与えました:



コードをコピー


コードは次のとおりです:プロトタイプ オブジェクトを操作するオブジェクトを作成するときにこの関数を使用します:




コードをコピーします

コードは次のとおりです:

var Cat = { 名前:'', 言い: 'ニャー' }; var myCat = Object.beget(Cat); 🎜> オブジェクトが生成された後、関連する属性を自分で割り当てることができます: myCat.name = 'mimi';

12.void

言語では、void は値を表現しない型です。しかし、Javascript では、void はオペランドを受け入れ、未定義を返す演算子です。
void 0; // 未定義
このコマンドは役に立たず、混乱を招くため、使用しないことをお勧めします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。