ホームページ  >  記事  >  ウェブフロントエンド  >  Js はパラメータ (文字列、配列、オブジェクト) が未定義であるか、値が empty_javascript スキルであるかを判断します。

Js はパラメータ (文字列、配列、オブジェクト) が未定義であるか、値が empty_javascript スキルであるかを判断します。

WBOY
WBOYオリジナル
2016-05-16 17:17:401636ブラウズ

時々、次のような状況に遭遇します。一部のフロントエンド コントロールがデータをサーバーに送信するときのデータ検証プロセス中に、送信されたデータが空かどうかを判断する必要があります。通常の形式の文字列データの場合、ここで必要なデータは JSON.stringify(data ) によってさまざまなタイプ (数値、文字列、配列、オブジェクトなど) にすることができます。シリーズ化され、その後合格しました。

次のデータ値は、ここでは「null 値」として定義されます:

•未定義
•null
•空の文字列と純粋な空の文字列: ''、' ' など。
•空の配列: []
•空のオブジェクト: {}

これ以外のデータ値は空ではないとみなされます。

このうち、null と unknown は識別しやすいですが、その他の型については、対応するメソッドを使用してデータが空かどうかを検出する前に、データ型を取得する必要があります。最も簡単に考える方法は、typeof 演算子を使用することです:

コードをコピーします コードは次のとおりです:

< ;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)">if(typeof data === 'number') {
//数値を処理します
}

ただし、typeof は、「object」、「function」、「number」、「boolean」、「string」、「unknown」の 6 種類の文字列のみを返します。Date などの多くのネイティブ オブジェクトです。および RegExp オブジェクトを使用して、作成されたオブジェクトを区別することはできません。さらに、typeof は、(String、Number、Boolean) などのいくつかの基本データ型と、それに対応する次のような基本的なパッケージング タイプ データに対して異なる値を返します:
コードをコピーします コードは次のとおりです:

console.log(typeof false) ; //'boolean'
console.log(typeof new Boolean(false)); //'object'
console.log(typeof); new Number(1)); //'object'
console.log(typeof ''); //'string'
console.log(typeof new String(''));


これも私たちの判断に一定の影響を与えます。
instanceof を使用しますか?これではオブジェクトのみを判定することができ、他のフレームから取得したオブジェクトが複数ある場合には、同種の複数のオブジェクトがプロトタイプを共有せず、正しく判定できないという問題がある。

幸いなことに、Object.prototype.toString という最も単純で信頼性の高いメソッドがもう 1 つあります。このメソッドは、さまざまな種類のデータに対して、「[object Object]」、「[object Array]」、「[object String]」などの文字列を返すことができるため、判断に非常に便利です。 IE8 以前のブラウザでは、このメソッドは null、未定義、ウィンドウなどに対して '[object Object]' を返しますが、幸いなことに、これは空のオブジェクトを決定するための使用には影響しません。

コードはそのすぐ下にあり、説明はコメントにあります。


コードをコピー コードは次のとおりです。
var isEmptyValue = function(value) {
var type;

if(value == null) { // value === unknown || value === null
return true;
}
type = Object。 prototype.toString.call(value).slice(8, -1);
switch(type) {
case 'String':
return !$.trim(value);
case ' array ':
return!value.length;

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。