私はこれをまとめました。どんなブラウザでもテストしていないのですが、Node.jsで実行しました。しかし、私はそれがする必要がありますと思う。
function blank(obj) {
var cache;
if((cache = typeof obj) !== 'boolean' && (cache !== 'number' || isNaN(obj)) && !obj)
return true;
if(cache == 'string' && obj.replace(/\s/g, '').length === 0)
return true;
if(cache == 'object') {
if((cache = toString.call(obj)) == '[object Array]' && obj.length === 0)
return true;
if(cache == '[object Object]') {
for(cache in obj) {
return false;
}
return true;
}
}
return false;
}
そう...
blank([])
// true
blank({})
// true
blank({ x: 123 })
// false
blank('')
// true
blank(' ')
// true
blank(' asdf')
// false
blank()
// true
var x; blank(x)
// true
var x = 12; blank(x)
// false
blank(true)
// false
blank(false)
// false
blank(0)
// false
blank(NaN)
// true
編集:真と偽のブランクではないとして戻ってくるようにキャッチを追加しました。 falseを空白とみなしたい場合は、それを変更します。
edit 2:最後に変更!ブランク(0)が真を返すことを防ぎます。しかし、NaNを空白と見なすことができます。
空のオブジェクトはJavaScriptで扱いにくいことがあります。私はそれに何かIEの問題があるとは思わない。 – Pointy
ルビーから来て、これは私にとって "本当の疑問"のようです。また、質問には、目的の動作の完全な仕様が含まれているため、あいまいでもあいまいでもありません。この質問は、OPが自分の研究を共有していないため、「広すぎる」または「不完全な」とみなされる可能性があります。 –