a. 不完全解构,也会成功,不会报错
b. 只要支持 Iterator 接口,都可以被解构赋值
c. null 可以替代默认值,而成功的解构赋值
d. 解构中不定参数可以出现在除第一个以外的其他位置
e. 解构是先找到同名属性,然后再赋给对应的变量
f. 默认值可以引用解构赋值的其他变量,但该变量必须已经声明
(d)
迭代一个对象的属性
不定参数只能放在最后一个位置
a. 在JavaScript中,任务被分为两种,一种宏任务(MacroTask),一种叫微任务(MicroTask),setTimeout 属于微任务
b. setTimeout(func, 500) 会精确的在 500ms 后执行 func
c. Promise、generator、async/await 都是异步解决方案
d. process.nextTick、Promise 都属于 node 中的微队列
e. 浏览器的 Event Loop 和 node 的 Event Loop 是不同的,实现机制也不一样
f. 在 node 中setTimeout 和 setImmediate 执行阶段是一致的
(c,d,e)
解析:f 两者的执行顺序要根据当前的执行环境才能确定
(那怎么知道主线程执行栈为空啊?js引擎存在monitoring process进程,会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数)
https://juejin.im/post/59e85eebf265da430d571f89
Markdown 是非常受技术人员喜欢的一种文本格式,请使用 JavaScript 来实现 marked 方法来进行 markdown 文本的 HTML 渲染,可以满足以下需求:
function marked(str) {
// your code here
}
marked('@@whatever@@').trim() // <p><blink>whatever</blink></p >
marked(' abc @@def@@ ghi ').trim() // <p><em>abc</em><blink>def</blink><strong>ghi</strong></p >
marked('@@ cool @@').trim() // <p><blink><strong>cool</strong></blink></p >
可以实现题目中的要求,但是还不能满足“@@abc”这样缺少对应字符串的情况
题目面试:桌面上有50枚硬币,一次可以拿2,4,6枚,另一位同学和你竞争,你拿一次,他拿一次,怎么保证最后一枚硬币是你拿到。
解题思路:这种问题可以从后往前推,如果要保证最后一枚硬币你拿到,那么你倒数第二次拿硬币后应该剩下8枚,此时另外一名同学不管是拿2枚,4枚,6枚,那么你肯定能拿到最后一枚。50-8=42 剩下42枚,怎么拿取?可以观察2 4 6 这几个数字的特点,4+4=8 2+6=8 6+2=8,不管另一位同学拿几枚,你都可以和他凑成8枚,42-5X8=2,最后剩下两枚,你先拿。
答案:你先拿2枚,另一个同学如果拿2枚,你拿6枚,另一个同学如果拿4枚,你也拿4枚,另一个同学如果拿6枚,你拿2枚,这样重复5个回合,最后剩下8枚,不管他怎么拿,你都能拿到最后一枚。