Javascript函数在每次调用时返回不同的值

时间:2019-03-13 17:34:53

标签: javascript

编写一个满足条件的函数:

  1. 在第一次调用时返回0
  2. 在每次下一次调用时返回下一个整数:1、2、3、4 ...
  3. 不传递任何参数
  4. 不使用全局变量(或外部变量)

似乎无法在简单循环上完成。那么您认为解决此问题的正确方法是什么?也许你知道该怎么做?

我发现在这种情况下使用IIFE非常有用:

let giveMeMore = (function () { 
let i = 0 //private variable 

const iterator = function() { 
return i++ //operation on private variable
} 
return iterator 
})() 
giveMeMore() 
giveMeMore() 
giveMeMore() 
giveMeMore()

2 个答案:

答案 0 :(得分:4)

const func = (function () { return this.i++ }).bind({ i: 0 })

console.log(func())
console.log(func())
console.log(func())
console.log(func())

答案 1 :(得分:0)

所以这段代码在做什么,让我们尝试了解

  • 首先在这里,我们有一个分配给变量func的函数。
  • 在函数内部,我们添加了一个名为value的属性,该属性会在每次函数调用时不断更新

var func = function value(){
  func.value = func.value || 0
  console.log(func.value)
  func.value++
}
func()
func()
func()