整理下之前做的有点疑惑的js基础题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
in 操作符
const add = () =>{
const cache = {}
return num =>{
if(num in cache){ //flag1
return `From cache ! ${cache[num]}`
}else{
const result = num + 10
cache[num] = result //flag2
return `Calculated ! ${result}`
}
}
}
const addFn = add()
console.log(addFn(10)) //Calculated ! 20
console.log(addFn(10)) //From cache ! 20
console.log(addFn(5*2)) //From cache ! 20
这题的主要问题是
flag1处的num到底是哪个?
flag2处:给 cache 对象添加了个属性,这里注意 num 是个变量,转换为string类型,执行完后 cache 应该为 { ‘10’:20 }
flag1处:执行 addFn(10) 时,也是变量 num ,相当于(10 in cache),这里涉及一个概念 对象的键中,字符串的键等价于数字类型的键,这个以后有这样的题。