在講正文之前,我想首先在這裡提一下js的幾種資料型別。在js中資料一共分為兩大類,分別是基本資料型別和引用型別——object。對於基本型別而言,判斷變數是否為空資料就很簡單了,基本資料型別:
underdined
null
boolean
number
string
引用型別(object):
function
array
object
date
regexp
引用型別大概是這幾種,還有基本包裝型別也是引用型別的一種,ecmascript還提供了 3個特殊的引用型別:boolean、number和string。
let a = '';
let b = 0;
let c = underfined;
let d = null;
let e = false;
由於空資料判斷多用在對後台返回的介面資料的判斷,所以在這裡只討論字串、數字0,陣列、物件、null的情況
let a = ''或者 let a = 0 或者 let a = null;
1、if( a === '' || a === 0 || a === null)
2、if( !a)
對於字串還有一種方式判斷,就是用length屬性:
let a = '';
console.log(!a.length); // true
當變數是空陣列或者空物件時,對變數取反的值是false,即
let arr = ;
let obj = {};
console.log(!arr,!obj); // false false
原因是 if ( [ ] ) 是判斷[ ] 是否是真值,但是假值只有6個,就是false,undefined,null,0,"",nan ,因此空陣列和空物件都是真值,不能用取反的方式去判斷資料是否為空,對於陣列可以用lengtn屬性去判斷。
let arr = ;
1、可以使用陣列的length屬性判斷( 已知變數型別是陣列 )
console.log(!arr.length); // true
console.log(arr.length === 0); // true
2、可以先將其轉換成字串,再與比較( 已知變數型別是陣列 )
console.log(json.stringify(obj) === ''); // true
而對於空物件而言,判斷方法總結了以下幾種:
let obj = {};
1、可以先將其轉換成字串,再與{}比較 ( 已知變數型別是物件 )
console.log(json.stringify(obj) === '{}'); // true
2、可以遍歷物件,沒有屬性的話就是空( 已知變數型別是物件 )
for(let key in obj)
console.log(true); // true
3、es6的object.keys()方法,會將物件中的屬性轉成乙個陣列,再判斷陣列是否為空即可( 已知變數型別是物件 )
var arr = object.keys(obj);
console.log(arr.length === 0); // true
4、與方法3類似,js中有個getownpropertynames()的方法,也是將物件中的除原型屬性以外的所有屬性轉成乙個陣列( 已知變數型別是物件 )
var arr = object.getownpropertynames(obj);
console.log(arr.length === 0); // true
當然以上大多數方法都是基於已知資料型別的前提下的,當我們不知道資料型別時,還需要額外進行判斷,在之後的學習中會總結,有需要的小夥伴可自取。
JS判斷值是否為空
1 typeof用法 typeof的運算數未定義,返回的就是 undefined 運算數為數字 typeof x number 字串typeof x string 布林值typeof x boolean 物件,陣列 和null typeof x object 函式typeof x function ...
js是否為空判斷大全
一 對於object物件判斷是否為空 例如 var object 1 jquery.isemptyobject object 為空返回true 用於物件未指定型別,或指定型別為陣列,物件三者時可用,其他型別不可用 1 if object undefined 為空返回true 未指明型別 2 if t...
js 判斷是否為空物件 空陣列
js 判斷是否為空物件 空陣列 當需要判斷引數是否為空時,總希望 js 能夠提供原生的判斷方法,可惜並沒有,只能自己封裝了。isempty function obj 檢驗陣列 if array.prototype.isprototypeof obj obj.length 0 檢驗物件 if obje...