接触到一个很有意思面试题,写个add函数,奇数次执行输出1,偶数次执行输出0。
闭包函数的应用
function fn() {
let count = 0;
//这是个闭包
return () => {
count++;
if (count & 1 === 1) return console.log(1);
console.log(0);
}
}
const add = fn();
add(); // 1
add(); // 0
add(); // 1
Generator函数
利用generator函数可以控制函数的执行,
函数遇到 yield 的会暂停,并把 yield 后面的表达式结果抛出去,
next作用是将代码的控制权交还给生成器函数。
function *foo() {
while (true) {
yield console.log('1');
yield console.log('0');
}
}
let it = foo()
function add() {
it.next()
}
add()
给函数自定义属性
执行函数时添加自定义属性,“给函数自定义属性”并不是常规做法
function add() {
add.count = add.count ? add.count+1 : 1
if (fn.count % 2 === 0) {
console.log(0)
} else {
console.log(1)
}
}
add()