まず、Nullと未定義の違いについて話しましょう。
宣言されているが、非目的で未宣言されていない変数でタイプを実行し、どちらも「未定義」に戻ります。
nullは空のオブジェクトポインターを意味し、型操作は「オブジェクト」を返します。
一般に、変数の値は明示的に定義されていないように設定されていませんが、それどころか、オブジェクトを保存しようとしている変数の場合、変数はnull値を保存するために明示的に許可する必要があります。
var bj; alert(bj); //「未定義」bj = null; alert(typeof bj); //「オブジェクト」アラート(bj == null); // truebj = {}; alert(bj == null); //間違い次の2つの機能は、シニア兄弟のデンから私に与えられました、ありがとう。
/**オブジェクトが空のオブジェクトであるかどうかを検出します(読み取り可能なプロパティなし)。 *このメソッドは、オブジェクト自体のプロパティとプロトタイプから継承されたプロパティの両方を検出します(そのため、HasownPropertyを作成していません)。 */function isempty(obj){for(var name in obj){return false;} return true;};空のオブジェクトはここで{}またはnullですか?テストケースを書きました。
var a = {}; a.name = 'realwall'; console.log(isempty(a)); //falseconsole.log(isempty({})); //trueconsole.log(iisempty(null)); // true //パラメーターがnullの場合は構文エラーがないことに注意してください。つまり、null nullポインターに属性を追加することはできませんが、for intatement?/**を使用して、オブジェクトが空のオブジェクトであるかどうかを検出できます(読み取り可能な属性は含まれていません)。 *このメソッドは、オブジェクト自体のプロパティのみを検出し、プロトタイプから継承されたプロパティを検出しません。 */function isownempty(obj){for(var name in obj){if(obj.hasownproperty(name)){return false;}} return true;};{}とnullの違い:
これは非常に重要です。
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; //ここにエラーが報告されます。 Bは画像のヌルポインターであり、属性を通常のオブジェクトのように直接追加することはできません。 b = a; b.name = 'jim'; // AとBは、この時点で同じオブジェクトを指します。 A.Name、B.Nameはすべて「ジャム」です