为什么null在JavaScript中被认为是一个对象?

正在检查

if ( object == null )
      Do something

if ( !object )
      Do something

?

还有:

null和undefined之间的区别是什么?


当前回答

例如窗口。someWeirdProperty是未定义的

”窗口。someWeirdProperty === null"的值为false时

”窗口。someWeirdProperty === undefined"的值为true。

此外,checkif if (!o)与检查if (o == null)是否为假并不相同。

其他回答

typeof null;      // object
typeof undefined; // undefined

null值表示有意不存在任何对象值。它是JavaScript的基本值之一,在布尔操作中被视为假值。

var x = null;
var y;

X被声明并定义为null

Y声明了,但没有定义。它声明时没有值,所以没有定义。

Z没有被声明,所以如果你试图使用Z,它也是未定义的。

Null是一个对象。它的类型是null。Undefined不是一个对象;其类型是未定义的。

与未定义相比,null的另一个有趣之处在于它可以递增。 X = undefined x + + Y = null y + + console.log(x) // NaN .log Console.log (y) // 0

这对于为计数器设置默认数值非常有用。你有多少次在声明中把一个变量设为-1 ?

一些精度:

Null和undefined是两个不同的值。一个表示没有名称的值,另一个表示没有名称。


对于if(o), if中发生的事情如下所示:

括号o中的表达式被求值,然后if语句开始对括号中的表达式的值进行类型强制——在我们的例子中是o。

JavaScript中的Falsy(将被强制为false)值为:",null, undefined, 0和false。

看看这个:

   <script>
function f(a){
  alert(typeof(a));
  if (a==null) alert('null');
  a?alert(true):alert(false);
}
</script>
                                          //return:
<button onclick="f()">nothing</button>    //undefined    null    false
<button onclick="f(null)">null</button>   //object       null    false
<button onclick="f('')">empty</button>    //string               false
<button onclick="f(0)">zero</button>      //number               false
<button onclick="f(1)">int</button>       //number               true
<button onclick="f('x')">str</button>     //string               true