首頁 > web前端 > js教程 > 主體

12種不宜使用的Javascript語法整理_基礎知識

WBOY
發布: 2016-05-16 17:17:40
原創
877 人瀏覽過
1.==
Javascript有兩組相等運算符,一組是==和!=,另一組是===和!==。前者只比較值的相等,後者除了值以外,還比較類型是否相同。
請盡量不要使用前一組,永遠只使用===和!==。因為==預設會進行類型轉換,規則十分難記。如果你不相信的話,請回答下面五個判斷式的值是true還是false:
  false == 'false'
  false == undefined
  false ==false == undefined
  false ==false == undefined
 〬
  0 == ''
前三個是false,後兩個是true。
2.with

with的本意是減少鍵盤輸入。例如
  obj.a = obj.b;
  obj.c = obj.d;
可以簡寫成

程式碼如下:


  with(obj) {
    a = b;
     a = b;
 〜、 ,在實際運作時,解釋器會先判斷obj.b和obj.d是否存在,如果不存在的話,再判斷全域變數b和d是否存在。這樣就導致了低效率,而且可能會導致意外,因此最好不要使用with語句。

3.eval
eval用來直接執行一個字串。這句語句也是不應該使用的,因為它有效能和安全性的問題,並且使得程式碼更難閱讀。
eval能夠做到的事情,不用它也能做到。例如
  eval("myValue = myObject." myKey ";");
可以直接寫成
  myValue = myObject[myKey];
至於ajax操作返回的json字串,可以使用官方網站字串提供的解析器json_parse.js運行。

4.continue
這條指令的作用是回到循環的頭部,但是循環本來就會回到頭部。所以透過適當的構造,完全可以避免使用這條指令,使得效率得到改善。

5.switch 貫穿
switch結構中的case語句,預設是順序執行,除非遇到break,return和throw。有的程式設計師喜歡利用這個特點,例如
複製程式碼 程式碼如下:

㟎> 程式碼如下:
    case 1:
       case 1:
       case 1:
     break;
      break;
      break;
    〜 break;
    〜 break;  〜>這樣寫錯。因此建議避免switch貫穿,凡是有case的地方,一律加上break。 複製程式碼

程式碼如下:


  約大) { 🎜>      break;
    case 2:
      break;
      break;
 『
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; // 未定義
このコマンドは役に立たず、混乱を招くため、使用しないことをお勧めします。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板