- 間違い
- 0
- ヌル
- 未定義
- 空の文字列
私はそれらを使用していますが、上記のリストの各見込み客が持っているわずかな違いをまだ認識していません. 私は主に 0,false を使用しますが、未定義の空の文字列を使用する多くのスクリプトに出くわしました。それらの正確な違いを知りたいです。ばかげた質問であることは承知していますが、簡潔な回答が得られれば幸いです。
私はそれらを使用していますが、上記のリストの各見込み客が持っているわずかな違いをまだ認識していません. 私は主に 0,false を使用しますが、未定義の空の文字列を使用する多くのスクリプトに出くわしました。それらの正確な違いを知りたいです。ばかげた質問であることは承知していますが、簡潔な回答が得られれば幸いです。
あなたが持っているリストは、javascript の 6 つの「偽」値のうちの 5 つです。それに「NaN」を追加すると、JavaScript にすべての偽の値が含まれます。したがって、完全な「偽」リストは次のとおりです。
1)0
2)""
3)false
4)undefined
5)null and
6)NaN
「if」ステートメントで使用すると、これらはすべて同じように動作するため、
if(0)
if("")
if(false)
if(undefined)
if(null) and
if(NaN) would behave the same
あなたは短く簡潔な答えを求めましたが、最善の方法は、基本的なテストでどのように機能するかを示すことだと思います. 長い回答で申し訳ありません
//Checking if all the "falsy" values evaluate the same way in a "if" statement
console.log("Checking if(0)");
if(0) {
console.log(" if(0) Will not be reached");
}
console.log('Checking if("")');
if("") {
console.log(' if("") Will not be reached');
}
console.log("Checking if(undefined)");
if(undefined) {
console.log("if(undefined) Will not be reached");
}
console.log("Checking if(null)");
if(null) {
console.log("if(null) Will not be reached");
}
console.log("Checking if(Nan)");
if(NaN) {
console.log("if(NaN) Will not be reached");
}
console.log("Checking if(false)");
if(false) {
console.log("if(false) Will not be reached");
}
// if 文ですべての偽の値が等しい (==) かどうかを確認する
if(0 == "") {
console.log('if(0 == "") is true');
}
if(0 == false) {
console.log("if(0 == false) is true");
}
if("" == false) {
console.log('if("" == false) is true');
}
if(0 == undefined) {
console.log("if(0 == undefined) Will not be reached");
}
if("" == null) {
console.log('if("" == null) Will not be reached');
}
if(undefined == null) {
console.log("if(undefined == null) is true");
}
if(NaN == "") {
console.log('if(NaN == "") Will not be reached');
}
// false と false の値が厳密に等しいかどうかをチェックします。 if(undefined === false) { console.log("Will not be reached"); }
if(null === false) {
console.log("Will not be reached");
}
if(undefined ===false) {
console.log("Will not be reached");
}
if(0 === false) {
console.log("Will not be reached");
}
if("" === false) {
console.log("Will not be reached");
}
if(NaN === false) {
console.log("Will not be reached");
}
これが意味することは、これらの「偽の」値は「if」ステートメントで同じ意味で使用される可能性がありますが、それらはすべて互いに等しい(==)わけではないことを意味します(特に0のセット、および他の3つのfalse)。より厳密な equals(====) が使用されている場合、これらのどれも false と等しくないため、false ではなく「false」に分類される可能性があります。
あなたが言及した値のうち 2 つだけが、指定された「特別な値」と呼ばれるものです。
null
- ほとんどの場合、これは適用外と同等です。undefined
- の暗黙のバージョンnull
両方の例:
function findByTitle(arr, title)
{
for (var i = 0; i < arr.length; ++i) {
if (arr[i].title === title) {
return arr[i];
}
}
return null;
}
の戻り値はnull
、レコードが見つからなかったことを示します。それ以外の場合はオブジェクトです。
function increment(x, by)
{
return x + (by || 1); // by may be undefined
}
increment(4); // 5
この場合、by
引数は渡されないため、JavaScript はそれをundefined
暗黙的に渡します。ただし、これを変数に割り当てることはお勧めしません。むしろ、私は使用しますnull
。
あなたが言及した他の値は特に特別なものではありません。文字列値の構築や合計の計算など、開始値として使用できますが、それ自体は特別なものではありません。
""
文字列ですfalse
ブール値です0
そしてNaN
数字です