JunYu

Results 38 comments of JunYu

同意 XiaoDHuang 的解答。 要想知道为什么 const 和 let 声明的变量不在 window 上,理解 ECMAScript 文档中的 environment record概念即可。细节可以看我个人整理的知识点 [《一起读ECMAScript-ECMAScript 中是如何讲解 environment record 和 executing context 的》](https://github.com/BruceYuj/front-end-interview-summary/blob/master/JavaScript/environment-record.md) 另外,最高赞答案说“全局环境下通过 let 和 const 声明变量处于script块级作用域中“,这句话概念上肯定是不正确的。没有理解 TC39 成员是如何在向后兼容 ES5...

> 怎么感觉大家回答的都是表层的东西...栈和堆这些都知道哪个可改变哪个不可改变...问的应该是怎么做到不可改变的吧? 其实题目想要考察的就是 javascript 表面语义的东西。 具体不同类型的声明产生的变量在内存中究竟如何存储,那要看 javascript engine 内部是如何实现的。这些实现细节对于上层前端开发者来讲了解即可。如果你真的想要了解究竟是分配在栈上还是堆上,去看 V8,spiderMonkey这些引擎的代码(个人觉得如果不做引擎这块,纯属看个人兴趣去深入了)。这些引擎内部是用 C 或 C++ 这种更加方面操作内存的语言写的。也就知道实现原理是什么了。

> > > 怎么感觉大家回答的都是表层的东西...栈和堆这些都知道哪个可改变哪个不可改变...问的应该是怎么做到不可改变的吧? > > > > > > 其实题目想要考察的就是 javascript 表面语义的东西。 > > 具体不同类型的声明产生的变量在内存中究竟如何存储,那要看 javascript engine 内部是如何实现的。这些实现细节对于上层前端开发者来讲了解即可。如果你真的想要了解究竟是分配在栈上还是堆上,去看 V8,spiderMonkey这些引擎的代码(个人觉得如果不做引擎这块,纯属看个人兴趣去深入了)。这些引擎内部是用 C 或 C++ 这种更加方面操作内存的语言写的。也就知道实现原理是什么了。 > > 明白了 十分感谢解惑 因为总觉得这样回答似乎很简单 看来是我想复杂了...

[ECMAScript 规范是如何告诉我们let, const, var 的区别的](https://github.com/BruceYuj/front-end-interview-summary/blob/master/JavaScript/javascript-declaration.md)

做完每一题(学习技术一定要以一手资料为主): [题目2答案](https://github.com/BruceYuj/front-end-interview-summary/blob/master/%E4%B9%A0%E9%A2%98/%E6%9C%A8%E6%98%93%E6%9D%A8/2.md):分别分析了specification里面是如何描述 parseInt 和 Array.prototype.map 的。

```js // 传入数组索引是否合法 function isValidIndex(index, arr) { return /^\d+$/.test(index) && index < arr.length; } /** * 数组元素交换位置 * @param {array} arr 数组 * @param {number} index1 添加项目的位置 * @param {number}...

``` css .css-tips:hover::before { content: attr(data-title); position: absolute; transform: translateY(-100%) translateY(-0.3em) translateX(-0.5em); width: 2em; padding: 0.2em 0.5em; border-radius:0.2em; background: #000; color: #fff; } .css-tips:hover::after { content: ''; position: absolute; transform:...

对于第一题,分析提议需要注意以下几点: 1. `scroll` event作为高触发事件,回调函数里面进行高损耗性能操作我们需要throttle,而throttle无外乎:`requestAnimationFrame()`,`setTimeout()` 或者`CustomEvent` 2. 兼容PC端和移动端,使用`window.pageYOffset`而不是`window.scrollY`(处于兼容性考虑,其实目前应该所有主流浏览器都支持这两个属性对)。另外我们需要修改Mobile浏览器的默认layout viewport等于ideal viewport的大小(``) 3. 获取viewport高度时,我采用了`document.documentElement.clientHeight`,而没有采用`window.innerHeight`,是因为我不希望加上可能出现的x轴scrollbar的高度 4. 是否考虑浏览器zoom in/out 操作,因为zoom操作很显然会改变浏览器的visual viewport dimension.理论上来讲,当用户scroll up之后再zoom in(放大), `window.scrollXOffset`和`window.scrollYOffset`应该会变化。但是browser本身对这个操作进行了内部处理,确保之前在可见视框顶部的元素仍然出现在顶部(尽管位置不一定是完美的),所以仍然会触发`scroll` event,也就是说我们不需要考虑zoom可能产生的后果。 ```css #backTop { position: fixed; bottom: 10px; right: 10px;...

you can‘’t use `import` module syntax to use sipml5. you should use `` in the root.

use order hexo s to test( not hexo s -debug)