但是您可以用 use strict 严格模式来避免这一行为,这样 arguments 就只是个副本了 。
23void 是个固执的老头
void 0 === undefined // truevoid 1 === undefined // truevoid {} === undefined // truevoid 'hello' === undefined // truevoid void 0 === undefined // true
跟谁都不沾亲~~
24try/catch/finally 也有特定的执行顺序
function fn1() { console.log('fn1'); return 1;}function fn2() { console.log('fn2'); return 2;}function getData() { try { throw new Error(''); } catch (e) { return fn1(); } finally { return fn2(); }}console.log(getData());// 打印顺序: 'fn1', 'fn2', 2
在 try/catch 代码块中,如果碰到 return xxyyzz; 关键词,那么 xxyyzz 会先执行并把值放在临时变量里,接着去执行 finally 代码块的内容后再返回该临时变量 。如果 finally 中也有 return aabbcc ,那么会立即返回新的数据 aabbcc 。
25是否存在这样的变量 x ,使得它等于多个数字?
const x = { value: 0, toString() { return ++this.value; }}x == 1 && x == 2 && x == 3; // true
通过隐式转换,这样不是什么难的事情 。
26clearTimeout 和 clearInterval 可以互换~~~~使用吗
var timeout = setTimeout(() => console.log(1), 1000);var interval = setInterval(() => console.log(2), 800);clearInterval(timeout);clearTimeout(interval);
答案是:YES 。大部分浏览器都支持互相清理定时器,但是建议使用对应的清理函数 。
27下面的打印顺序是?
setTimeout(() => { console.log(1);}, 0);new Promise((resolve) => { console.log(2); resolve();}).then(() => console.log(3));function callMe() { console.log(4);}(async () => { await callMe(); console.log(5);})();
答案是:2, 4, 3, 5, 1
主线任务:2,4
微任务:3,5
宏任务:1
28null 是 object 类型,但又不是继承于 Object ,它更像一个历史遗留的 bug 。鉴于太多人在用这个特性,修复它反而会导致成千上万的程序出错 。
typeof null === 'object'; // trueObject.prototype.toString.call(null); // [object Null]null instanceof Object; // false
【JavaScript 里的奇葩知识】
推荐阅读
- 孝宣皇帝的皇后 孝钦皇太后是谁
- 宋代图书分类方法 古代私人书籍收藏的最大图书馆是
- 清朝十三阿哥胤祥的结局 历史上的十三阿哥胤祥福晋
- 适合微信端商城的营销手段有哪些?
- 善用沙盒虚拟机,测试有风险的程序让你无视木马病毒
- 好的金骏眉的特点,金骏眉品质鉴别
- CA证书服务器的搭建
- 再遭遇大流量的DDOS/CC攻击时为什么高防CDN是首选
- 喝什么菊花茶好,孕期喝菊花茶的注意事项
- 浑身是宝的普洱茶,五宝补肾茶配方