null 表示一个值被定义了,定义为'空值';
undefined 表示没有定义。
转换为数字时
Number(undefined) === NaN
Number(null) === 0
在es6使用默认参数时,参数省略或为undefined,取参数默认值,参数为null,则对应参数赋值为nul
设置一个值为null是合理的,设置一个值为undefined是不合理的,对一个不存在的属性取值全等undefined
let obj={a:null};
obj.b===undefined true
let obj1={a:undefined};
若你尝试对某元素引用一个该元素并不支持的事件,你会发现该元素的'on事件名'属性是undefined。但如果某事件被该元素所支持,但事件处理函数没设置,那么'on事件名'是null
<button id='btn'>haha</button>
var btn=document.getElementById('btn');
console.log(btn.onclick)//null,button没有设置click事件处理程序
console.log(btn.ondone) //undefined,button不支持done事件