0

重複の可能性:
javascriptで同等のphp isset()

PHP の例: http://codepad.viper-7.com/vo4wGI

<?php
var_dump( isset($something['deep']->property) ); // false
# because well, there is no such thing defined at all

JS に相当するもの: http://jsfiddle.net/psycketom/Lp83m/ただし、ブラウザーは型を解決しようとする前に最初に値を検索するように見え、見つからない場合は取得するため、機能しません。

console.log( typeof something['deep'].property ); // Uncaught ReferenceError: something is not defined 

深い未定義のプロパティを適切に解決する JavaScript のネイティブ関数はありますか?

4

2 に答える 2

2

オブジェクト自体とプロパティをチェックする関数を書くことができます:

function isset(obj, prop) {
  return typeof obj !== 'undefined' ? obj.hasOwnProperty(prop) : false;
}

あなたはそれを次のように呼びます:

myObj = {
  "myprop1": "myvalue1"
};

isset(myObj, "myprop1"); // returns true
isset(myObj, "anotherprop"); // returns false
isset(); // returns false

編集:あなたの質問に答えるには、いいえ、それを行うネイティブ関数はありません。オブジェクトを深くチェックしたい場合(オブジェクト内のどこかにプロパティが存在する場合)、自分で書く必要があります。再帰的に行うことができます。しかし、そのプロパティがどの「レベル」に存在するのかわからないため、それを行う意味がわかりません(それを返すことはできますが、ブール値の戻り値を持つ isset-function を持っていません)

于 2012-11-25T16:42:29.660 に答える
2

これはvar、チェックする必要がある変数である場合に機能するはずです..

  if (typeof(var) != 'undefined' && var != null ) {
       //do something
    }
于 2012-11-25T17:13:42.513 に答える