3

ピンチズームイン/アウトコードの実装に取り​​組んでいます。
WinJSセマンティックズームの実装を確認したところ、興味深いコードスニペットが見つかりました。

JavaScript 1.0 / js/ui.js用のWindowsライブラリ

行番号:30710、30720

return {
   x: +ev.clientX === ev.clientX ? (ev.clientX - sezoBox.left - sezoPaddingLeft - sezoBorderLeft) : 0,
   y: +ev.clientY === ev.clientY ? (ev.clientY - sezoBox.top - sezoPaddingTop - sezoPaddingTop) : 0
};

なぜあるのです+ev.clientX === ev.clientXか?

4

4 に答える 4

4

単項+演算子は、へのキャストとして使用されNumberます。それは数字であることを確認するための本当にあいまいな方法ですev.clientX

私の推奨事項:それを使用しないでください。この男は本当に彼のワンライナーが好きだと思います。彼の同僚が彼に同意するとは思えない。

于 2013-01-16T21:28:07.193 に答える
3

これは、ev.clientXが数値でないかどうかを確認する方法です。

x === x 

と同等です

!isNaN(x)
于 2013-01-16T21:25:46.657 に答える
2

ev.clientX彼らは、が数字であるかどうか、そうでないかどうかをチェック していNaNます。そうである場合、それらは計算を行い、そうでない場合、それらは0を返します。

単項プラス演算子+は、任意の値を数値に強制します。したがって、ev.clientXにタイプがない場合はnumber+ev.clientX !== ev.clientX

また、、でNaN !== NaNある場合ev.clientXNaNfalseを返すことに注意してください。

于 2013-01-16T21:26:16.003 に答える
2

+variable変数を数値に解析します。例:

var a = "1";
+a; // 1

したがってevent.clientX、が数値であるかどうかを確認するためのチェックです。

var a = "1";
+a === a // false

a文字列です。

var a = 1;
+a === a // true
于 2013-01-16T21:27:48.847 に答える