美文网首页Web前端之路
JS如何使函数只执行一次——闭包法✌️

JS如何使函数只执行一次——闭包法✌️

作者: forJavascript | 来源:发表于2019-12-11 00:54 被阅读0次

思路

要保证一个函数只能调用一次,必须有个flag变量判断函数是否被调用。这个变量按理说是个全局变量,但是我不希望这个flag污染全局变量池,由此我想到了使用闭包。

function once(fn) {
  var flag = false
  return function() {
    if(!flag) {
      flag = true
      fn.call(this,...arguments)
    }
  }
}

let fn = function(m, n) {
  console.log(m + n)
}

let a = once(fn)

a(2,3) // 5
a(3,4) // 不会执行打印

总结

这样写的好处是flag变量不会污染全局变量痴。但是相对而言,其实called变量在函数once()中,前者属于后者的全局变量。这涉及到了闭包的作用域链,可自行搜索。

相关文章

  • JS如何使函数只执行一次——闭包法✌️

    思路 要保证一个函数只能调用一次,必须有个flag变量判断函数是否被调用。这个变量按理说是个全局变量,但是我不希望...

  • 面试题 闭包 继承 原型

    闭包 什么是闭包?闭包的作用?闭包的应用?答: 函数执行,形成私有的执行上下文,使内部私有变量不受外界干扰,起到保...

  • JavaScript闭包学习笔记

    @(JS技巧)[闭包] JavaScript闭包学习笔记 什么是闭包? 有些情况下,函数调用完成之后,其执行上下文...

  • 简单聊一下js闭包

    js闭包,阮老师说:‘闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函...

  • 闭包是什么?用处如何?

    【js-04】闭包是什么?用处如何? ...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • Javascript-基本知识(六)

    1. 闭包 1 闭包的作用: 2 setTimeOut和闭包: js本身是单线程。 单线程的局限性:执行多个任务时...

  • js 随笔

    js 执行机制: js执行上下文: 只有理解了js 执行上下文才能更好的理解 js变量提升以及 作用域和闭包 所谓...

  • js闭包

    1、js的闭包 执行完 var c = a()后,变量c实际指向函数名b,再执行 c()会alert(1)[第一次...

  • JS闭包

    JS闭包 闭包练习

网友评论

    本文标题:JS如何使函数只执行一次——闭包法✌️

    本文链接:https://www.haomeiwen.com/subject/rvingctx.html