前几天遇到个比较有意思的题目,乍眼一看,没想到怎么实现,细品发现这不就是道脑筋急转弯嘛。

题目是这样的:

// 不用全局变量实现函数执行计数
function a() {
// write here
}

console.log(a()); //1
console.log(a()); //2
console.log(a()); //3

看到这道题,第一印象当然是找个变量去记录每一次的执行,这里又不让声明全局变量,也没有传入的参数,怎么办呢?我忘了除了变量可以存东西,还可以用其他容器去存,既然变量行不通,那是不是可以利用 js 的函数也是对象这一特性把计数存在属性里呢?

于是,我的题解是这样的:

// 不用全局变量实现函数执行计数
function a() {
// write here
return a.count ? (a.count += 1) : (a.count = 1);
}

console.log(a()); //1
console.log(a()); //2
console.log(a()); //3