ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript オブジェクトが null であるか、属性が empty_javascript スキルであるかを判断する簡単な方法

JavaScript オブジェクトが null であるか、属性が empty_javascript スキルであるかを判断する簡単な方法

WBOY
リリース: 2016-05-16 16:35:15
オリジナル
1491 人が閲覧しました

まず、null と未定義の違いについて説明します。

宣言されているが初期化されておらず、宣言されていない変数に対して typeof を実行すると、「未定義」が返されます。

null は null オブジェクト ポインターを表し、typeof 操作は「object」を返します。

一般に、変数の値は明示的に未定義に設定されませんが、逆に、オブジェクトを保存する変数の場合は、明示的に null 値の保存を変数に許可する必要があります。

var bj;
alert(bj); //"undefined"
bj = null;
alert(typeof bj); //"object"
alert(bj == null); //true
bj = {};
alert(bj == null); //false
ログイン後にコピー

次の 2 つの機能は、Deng 兄弟から私に与えられました。ありがとうございます。

/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。
*/
function isEmpty(obj)
{
for (var name in obj)
{
return false;
}
return true;
};
ログイン後にコピー

ここで言う空のオブジェクトは {} または null です。テストケースを書きました。

var a = {};
a.name = 'realwall';
console.log(isEmpty(a)); //false
console.log(isEmpty({})); //true
console.log(isEmpty(null)); //true

//注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句

  
?
/*
* 检测对象是否是空对象(不包含任何可读属性)。
* 方法只既检测对象本身的属性,不检测从原型继承的属性。
*/
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 均为'jam'
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート