fe-weekly-questions
fe-weekly-questions copied to clipboard
A pro to record some interview questions every week...
已在作用域中声明但还没有赋值的变量,是 undefined 的。相反,还没有在作用域中声明 过的变量,是 undeclared 的。对于 undeclared 变量的引用,浏览器会报引用错误,如 ReferenceError: b is not defined 。但是我们可以使用 typeof 的安全防范机制来避免 报错,因为对于 undeclared(或者 not defined )变量,typeof 会返回 "undefined"。
```js { "a": { "b": { "c": { "d": 1 } } }, "aa": 2, "c": [ 1, 2 ] } //输出 { 'a.b.c.d': 1, aa: 2, 'c[0]': 1, 'c[1]':...
实现一个LRU过期算法的KV cache, 所有KV过期间隔相同, 满足如下性质: 1. 最多存储n对KV; 2. 如果大于n个, 则随意剔除一个已经过期的KV; 3. 如果没有过期的KV, 则按照LRU的规则剔除一个KV; 4. 查询时如果已经过期, 则返回空;
说说事件委托
事件委托, 现实意义上讲是指将自己的事务嘱托他人代为处理。js中是 允许我们不必为某些特定的节点添加事件监听器,而是将事件监听器添加到(这些节点的)某个 parent节点上。利用事件冒泡,去找到匹配的子节点元素,然后做出相应的事件响应。是主要用来解决“事件处理程序过多”这个问题的。 经典例子:ul 里面的li的事件绑定。 ```js window.onload = function(){ var oUl = document.getElementById("ul"); var aLi = oUl.getElementsByTagName("li"); /* 这里要用到事件源:event 对象,事件源,不管在哪个事件中,只要你操作的那个元素就是事件源。 ie:window.event.srcElement 标准下:event.target nodeName:找到元素的标签名 */ oUl.onmouseover = function(ev){ var ev...