1. ホーム
  2. javascript

[解決済み】JavaScriptのisset()に相当するもの

2022-01-22 12:43:31

質問

PHPでは、次のようなことができます。 if(isset($array['foo'])) { ... } . JavaScript では、しばしば if(array.foo) { ... } を使えば同じことができますが、これは全く同じ文ではありません。この条件も array.foo は存在するが false または 0 (おそらく他の値も)。

PHPの isset をJavaScriptで作成することはできますか?

広い意味で、存在しない変数や値のない変数など、JavaScriptの扱いに関する一般的で完全なガイドがあれば便利だと思います。

解決するには?

私は一般的に typeof 演算子を使用します。

if (typeof obj.foo !== 'undefined') {
  // your code here
}

を返すことになります。 "undefined" そのプロパティが存在しないか、その値が undefined .

<サブ (参照)。 との違い undefined と定義されていない。 )

オブジェクトにプロパティが存在するかどうかを確認する方法は他にもあり、例えば hasOwnProperty メソッドを使用します。

if (obj.hasOwnProperty('foo')) {
  // your code here
}

そして in 演算子を使用します。

if ('foo' in obj) {
  // your code here
}

最後の2つの違いは hasOwnProperty メソッドはプロパティが存在するかどうかをチェックします。 物理的に をオブジェクトに追加します (プロパティは継承されません)。

in 演算子は、プロトタイプチェーンで到達可能なすべてのプロパティをチェックします。

var obj = { foo: 'bar'};

obj.hasOwnProperty('foo'); // true
obj.hasOwnProperty('toString'); // false
'toString' in obj; // true

ご覧の通りです。 hasOwnProperty は以下を返します。 falsein 演算子は true をチェックするときに toString メソッドの場合、このメソッドはプロトタイプチェーンの上位で定義されます。 obj を継承しています。 Object.prototype .