首頁 web前端 js教程 12種不宜使用的Javascript語法整理_基礎知識

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

May 16, 2016 pm 05:17 PM

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; // 未定義
このコマンドは役に立たず、混乱を招くため、使用しないことをお勧めします。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

了解JavaScript引擎:實施詳細信息 了解JavaScript引擎:實施詳細信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

Python vs. JavaScript:開發環境和工具 Python vs. JavaScript:開發環境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

C/C在JavaScript口譯員和編譯器中的作用 C/C在JavaScript口譯員和編譯器中的作用 Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

See all articles