JavaScript 老大的叠盘子游戏
执行大厅刚换上一摞新盘子,递归函数就抱着盘子冲了进来:“再加一层!”盘子越堆越高,事件大厅在门外急得直拍门——最上面那只到底什么时候才能拿走?
执行大厅刚换上一摞新盘子,递归函数就抱着盘子冲了进来:“再加一层!”盘子越堆越高,事件大厅在门外急得直拍门——最上面那只到底什么时候才能拿走?
函数早已执行结束,临时工作室却死活关不掉。清理员刚碰门把手,警报立刻响起:“该环境仍可访问,禁止清理!”到底哪把钥匙还没交回来?
对象从哪里找到自身没有的属性?`prototype`、`__proto__` 和 `constructor` 绕来绕去,究竟是谁指向谁?从一次取值开始,把原型链顺着内存关系拆开。
JavaScript 明明只有一条主线程,定时器、请求和点击事件为什么还能同时忙起来?宏任务与微任务又是怎么排队的?事件循环该登场了。
同一段定时器和 Promise 代码,放进浏览器与 Node.js,输出顺序为什么会变?六个阶段轮番接力,真正绕人的地方藏在 `poll` 和微任务的执行时机里。
HTML5 只是 HTML4 的升级版吗?语义化、通信、存储、DOM、BOM 甚至 CSS3 都被装进这个名字后,“H5”早已不只是一份标签规范。
HTML 是编程语言吗?浏览器访问 `.jsp`、`.php` 时,最后拿到的又是什么?从超文本与浏览器的诞生出发,重新看看 HTML 到底负责什么。
CSS 为什么叫“层叠”样式表?选择器、继承和权重撞在一起时,最终样式究竟听谁的?从名字开始,重新认识这门每天都在写的语言。
JavaScript 能操作页面,也能跑在服务器,甚至还能写桌面应用——这些能力到底属于语言,还是宿主环境?先把边界划清,再重新回答:什么是 JavaScript?
地址栏变了,页面为什么没有刷新?刷新一下,history 路由又为什么突然 404?Hash 和 History 的差别,不只是 URL 里有没有一个 `#`。
一张背景图而已,浏览器怎么还要忙着定画布、改尺寸、找起点、做裁剪?再叠上渐变和多背景,谁先画、谁盖住谁?
Flex 只是个“居中神器”?主轴一换、内容一换行,熟悉的属性立刻开始打架。搞清容器行和空间分配,Flex 才算真正用明白。