ホームページ  >  記事  >  ウェブフロントエンド  >  日常の JavaScript コードで注意すべき 6 つのこと

日常の JavaScript コードで注意すべき 6 つのこと

韦小宝
韦小宝オリジナル
2018-03-14 13:06:561256ブラウズ

JavaScriptの日々の開発において、いくつかのコードがエラーを起こすかどうかに誰もが注意を払う必要があります。今日は、多くの学生が取り組む必要があるJavaScriptの日常の開発で注意すべき6つのエラーが発生しやすい部分をまとめます。見てください!早速、本題に入りましょう!

関数を直ちに実行します

関数を直ちに実行します。通常、これはクロージャーとしても使用でき、関数レベルの変数スコープを構築できます。一般的な記述方法は次のとおりです。

(function () {
  // code
})();
ただし、この記述方法では問題が発生しやすいため、たとえば、上記のコードがセミコロンで終わっていない場合:

var a = 1
(function () { // Uncaught TypeError: 1 is not a function
})()
のように記述する必要があります。

または:

void function () {
  // code
}();
!function () {
  // code
}();

どちらを選択するかは個人の好みによって異なります。js には、standardjs 標準と呼ばれる標準があり、行末のセミコロンを省略することを推奨しています (私はこの習慣に慣れていません)。変えられること。

2. 空のオブジェクト null

JS の誕生以来、null には

Object クラス

型が与えられており、これまで、そして今後も変更されることはないと言えます。 null はオブジェクトとしての基本的な特性を持たず、元の

データ型

に属します。私が説明したいのは、変数がオブジェクトであるかどうかを判断する前に、まず null であるかどうかを判断する必要があるということです。

;(function(){
   //code
})()
3. 小数を勝手に比較しないでください

小数間の計算を行うときは、浮動小数点数の前に精度の問題に注意してください。

例: 0.1+0.2 は 0.3 に等しいですか? 答えは次のとおりです: 0.1+0.2=0.30000000000000004

同様に: 0.4-0.3=0.1000000000000003

そのような計算が存在する場合は、10 進数を 0.3 に変換します。まず

文字列

を使用します。 toFixed to go 小数点以下の桁数を比較します:

if (opt!== null && typeof opt=== 'object') {
  // opt是一个对象
}
注: 2 つの数値の差が特定の範囲まで十分に小さい場合、それらは等しいと見なされます。

(0.1 + 0.2).toFixed(2) === '0.30'

4. NaN を常に覚えておいてください

NaN に関して言えば、誰もが思い浮かべるべき特徴があります、NaN!==NaN。はい、それはクールです。

変数が NaN であるかどうかを判断する必要がある場合は、変数自体と比較してください。等しくない場合は、それは NaN です。

数値が NaN かどうかを判断するには、isNaN() メソッドを使用できます。ただし、変数の具体的なデータ型がわからない場合は、この方法を安易に判定しないでください。isNaN には、まず判定対象の変数を数値に変換して計算してしまうという奇妙な特性があるからです。

Math.abs(0.1+0.2 - 0.3) <= 1e-10 // true

それでは、今度はあなたの判定結果に驚きをもたらすでしょう。

もう 1 つの注意点は、opt===NaN など、変数を NaN と決して比較しないことです。

5. Null と unknown を比較するだけでなく、非厳密な == and! も決して使用しないでください。 =

=== を使ってみて! という記事や仕様をたくさん見かけると思います。 ==、== と ! は使用しないでください。 =、その理由は、後者は強制的な

型変換

を実行するためです (見つけにくいバグが発生します)。 まず見てください:

isNaN(&#39;abc&#39;) // true
isNaN(&#39;123&#39;) // false
isNaN(&#39;&#39;) // false
isNaN([]) // false
isNaN({}) // true

上記の判断に疑問がある場合は、次のルールを覚えてください:

&#39;true&#39; == true // => false
'true' == false // => false
[] == {} // => false
[] == [] // => false

つまり、x が null か未定義かを判断するには == を使用し、それ以外の場合は決して使用しないでください。

6. 使用には注意してください || デフォルト値を設定する

長年ゲームに携わってきた JS 開発者は次のように書くと思います: arg1 の意味を説明します。 arg1 を true に変換した場合は arg1 を取得し、それ以外の場合は arg2 を取得します。

それでは、まず true に変換できない値を見てみましょう?

1.未定義

2.null

3.NaN

4.整数0

5.空の文字列「 」

所以如果当用户传给arg1的参数是0或者为空字符串“”的时候,那么最终的值就会取默认的(||后面)值是不是?好,问题来了。如果用户传给后台的查询关键字data(上面代码)是空字符串“”,那么就应该按照空字符串“”去后台数据库查询,而结果传给后台的却是“你好”,显然查询结果也就不对。

好,回到主题,实际上只有undefined才应该被认为是用户没有指定其具体值,我曾看过有人这样理解(null 表示 用户让你给他把这个位置空着;而 undefined 表示 用户没发表意见

so :

page = page !== undefined ? page : 0;
data = data !== undefined ? data :'你好';

只需判断undefined即可。

个人理解如果有需求,可以把null加进去判断。

以上が日常の JavaScript コードで注意すべき 6 つのことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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