var
声明的变量在函数作用域里面会提升至顶部,在全局作用域里面会挂载到 window
对象上面。
var foo = 123 console.log(window.foo) // 123 ;(() => { console.log(bar) // undefined var bar = 456 })()
"ECMAScript6 暂时性死区 / 临时死区 / TDZ"继续阅读
var
声明的变量在函数作用域里面会提升至顶部,在全局作用域里面会挂载到 window
对象上面。
var foo = 123 console.log(window.foo) // 123 ;(() => { console.log(bar) // undefined var bar = 456 })()
"ECMAScript6 暂时性死区 / 临时死区 / TDZ"继续阅读
window
)的拒绝状态监听事件unhandledrejection
当 Promise 被拒绝,并且没有提供拒绝处理程序时,触发该事件。rejectionhandled
当 Promise 被拒绝时,若拒绝处理程序被调用,触发该事件。"Promise 监听拒绝状态"继续阅读
常规方法
const obj = { a: 1, b: 2, c: 3, [Symbol.iterator]() { let [index, values] = [0, Object.values(this)] return { next() { const done = (index >= values.length) const value = done ? undefined : values[index++] return { done, value } } } } } for (let v of obj) { console.log(v) // 1 2 3 }
"迭代器(Iterator)和生成器(Generation)"继续阅读
在一个赋值操作符左边放置一个对象字面量。
let { name, age } = { name: 'cherrie', age: '17' }
console.log(name, age) // cherrie 17
"ECMAScript6 解构赋值"继续阅读
husky + lint-staged + prettier + eslint + commitlint
git commit
, git push
。"通过 eslint stylelint htmllint 规范前端项目代码"继续阅读
then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数。then()方法会返回一个新的Promise实例,所以then()方法后面可以继续跟另一个then()方法进行链式调用。
"ES6 Promise对象then方法链式调用"继续阅读
JavaScript中的递归即函数内调用函数自身,但递归是非常耗内存的,每一次调用都会分配一定的栈空间,达到一定的数量(具体看浏览器)便会溢出报错。
"通过尾递归避免栈溢出"继续阅读