我有一个有趣的问题,我确信很容易解释,但解释是我的想法.
javascript中的undefined或null对象等于false.
var x;
alert(!x); //returns true
alert(x==true); //returns false
Run Code Online (Sandbox Code Playgroud)
那个空数组对象怎么样?这相当于真还是假?
var x = [];
alert (x==true); //returns false
alert (!x); //returns false
Run Code Online (Sandbox Code Playgroud)
如果它等于true,我该如何检查它是否为空?我本来希望这样做
if (!x) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
我试过检查x.length,但我正在使用这个对象作为地图:
var x = [];
alert(x.length); //returns 0
x.prop = "hello";
alert(x.length); //still returns 0
Run Code Online (Sandbox Code Playgroud)
如何检查我的地图是否为空?
Joã*_*lva 13
它并不像看起来那么容易,你必须检查对象是否至少有一个属性.
jQuery提供isEmptyObject了这个目的:
function isEmptyObject( obj ) {
for ( var name in obj ) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
样品用法:
> var x = [];
> x.prop = "hello";
> isEmptyObject(x);
false
Run Code Online (Sandbox Code Playgroud)
有点困惑,因为你似乎在你的问题中混合对象和数组.希望这可能有助于为您清理它.
空数组的计算结果为true:
!![] //true
Run Code Online (Sandbox Code Playgroud)
但是整数0的计算结果为false,所以你可以这样做:
!![].length //false
Run Code Online (Sandbox Code Playgroud)
所以:
if([].length) {
//array has 1 element at least
} else {
//array has 0 elements
}
Run Code Online (Sandbox Code Playgroud)
但是你似乎确实让数组和对象混淆了.在JavaScript中,我们有对象:
var x = {};
x.foo = "bar";
x.baz = 2;
Run Code Online (Sandbox Code Playgroud)
我们有阵列:
var x = [];
x.push("foo");
x.length //1
Run Code Online (Sandbox Code Playgroud)
你不能在揭幕战中做你做的事情:
var x = []; //x is an array
x.foo = "bar"; //can't do this on an array
x.length; // 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38050 次 |
| 最近记录: |