逻辑非操作符
如果操作数是一个对象,返回false;
如果操作数是一个空字符串,返回true;
如果操作数是一个非空字符串,返回false;
如果操作数是数值0,返回true;
如果操作数是任意非0数值(包括Infinity),返回false;
如果操作数是null,返回true;
如果操作数NaN,返回true;
如果操作数undefined,返回true;
逻辑与
如果第一个操作数是对象,则返回第二个操作数;
如果第二个操作数是对象,则只有第一个操作数的求值结果为true的情况下才会返回该对象;
如果两个操作数都是对象,则返回第二个操作数;
如果有一个操作数是null,侧返回null;
如果有一个操作数是NaN,侧返回NaN;
如果有一个操作数是undefined,则返回undefined;
(原因是null、NaN、undefined 都是false)
逻辑或
如果第一个操作数是对象,则返回第一个操作数;
如果第一个操作数的求值结果为false,则返回第二个操作数;
如果两个操作数是对象,侧返回第一个操作数;
如果两个操作数都是null,则返回null;
如果两个操作数都是NaN,侧返回NaN;
如果两个操作数都是undefined,侧返回undefined;