ほとんどの問題を回避するには、strict
モードでJavascriptを実行してみてください。
偽ヌルNaNの、 ""、ヌル、未定義、0など、彼らは関係なく、あなたがstrict
モードを使用するか、JavaScriptで(falsy
を忘れないでください!== false
)falsy値として考慮されていません。
// 'use strict';
console.log(!NaN); // true
console.log(!null); // true
console.log(!false); // true
console.log(!""); // true
console.log(!null); // true
console.log(!undefined); // true
console.log(!0); // true
これは、NaN以外のPythonでも同様です。我々は複数の言語を使用する場合たとえば、混乱 の
print(not False) # True
print(not None) # True
print(not float("NaN")) # False
print(not "") # True
print(not 0) # True
ソースは、時にはそれが混乱の原因になります。例えば
、Trueを返す'cat' in ['fat', 'cat', 'rat', 'hat']
Pythonで
。
JavaScriptで'cat' in ['fat', 'cat', 'rat', 'hat']
(全く同じコード)は、strict
モードを使用しているかどうかにかかわらずfalseを返します。
Python print(not [])
ではTrueを返します。
Javascriptでconsole.log(![]);
はfalseを返します。
これは、コードがどれほどシンプルであっても、常にデバッガ、REPLなどを使用するのが好きな理由の1つです。
@pvgは重複していないようです。 NaNと何も比較していません。 –
@pvgこれを投稿する前に検索しましたが、私が求めていた特定の質問に対する回答が表示されませんでした。 – newswim
@Martinあなたは正しいです、私は質問を誤読し、フラグを削除しました。これははるかに簡単ですが、関連する解答の海で愚か者をピン止めするのは難しいです。 – pvg