考虑例如以下场景:假如我们须要在界面上画一个圆,初始的时候界面是空白的。当鼠标移动的时候,圆须要尾随鼠标移动。鼠标的当前位置就是圆心。我们的实现方案是:假设界面上还没有画圆,那么就新创建一个;假设已经存在,就直接更新其位置。这样可以避免先销毁。后创建的开销。

var circle = null;function drawCircle(position)
{if(circle == null){circle = GUI.Create(position);//创建1个圆}else{circle.updatePositon(position);//更新圆的位置}
}

这段代码没有什么问题,除了引入了全局变量circle,而实际上circle仅仅会在drawCircle()函数中使用。也就说为了实现if-else的推断,我们不得不使用全局变量。

有没有什么方式可以让函数拥有记忆功能,可以记住之前是否创建了圆。

这种话,我们就不用使用全局变量了。

var drawCircle = function(position)
{var circle = null;function innerFunc(position){if(circle == null){circle = GUI.Create(position);}else{circle.updatePositon(position);}}return innerFunc;
}();

这段代码可以正确的实现须要的功能,并且不会引入没有必要的全局变量。

var drawCircle = function(position)
{}();

这段代码会定义1个作用域。大括号内部定义的变量和函数,对于外部都是不可见的。并且大括号内部的代码会立马运行,代码 之前完之后将innerFunc赋值给drawCircle函数。这种话。就行缩小变量的作用域。

转载于:https://www.cnblogs.com/mengfanrong/p/5222609.html

让你的javascript函数拥有记忆功能,降低全局变量的使用相关推荐

  1. 深入理解 JavaScript 函数的特性与最佳实践

    函数用于指定对象的行为.所谓的编程,就是将一组需求分解为一组函数和数据结构的技能. 1 函数对象 JavaScript 函数就是对象.对象是名值对的集合,它还拥有一个连接到原型对象的链接.对象字面量产 ...

  2. Javascript函数和事件

    一.默认函数 JavaScript提供了一些默认的函数 编码函数escape():将非字母.数字字符转换成ASCII码 译码函数unescape():将ASCII码转换成字母.数字字符 求值函数eva ...

  3. 第一百零二节,JavaScript函数

    JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...

  4. 菜鸟教程 之 JavaScript 函数(function)

    From:https://www.runoob.com/js/js-function-definition.html JavaScript 函数定义 JavaScript 使用关键字 function ...

  5. JavaScript函数和BOM及DOM编程(详细总结-无尿点)

    JavaScript函数和BOM及DOM编程(详细总结-无尿点) javascript 函数 一.javascript函数 1.1 概述 1.2 常见的系统函数 1.2.1 eval 1.2.2 pa ...

  6. JavaScript函数,作用域以及闭包

    JavaScript函数,作用域以及闭包 1. 函数 (1). 函数定义:函数使用function关键字定义,它可以用在函数定义表达式或者函数声明定义. a. 函数的两种定义方式: * functio ...

  7. JavaScript函数详细介绍

    一.函数介绍 函数就是将实现特定功能的代码封装起来,当我们需要实现特定功能时,直接调用函数实现即可,不需要每次都写一堆代码,实现代码的复用. 函数的作用: 1.实现功能的封装,提高代码复用率 2.用于 ...

  8. 深入理解javascript函数系列第二篇——函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数.本文是深入理解javascript函数 ...

  9. Javascript函数的简单学习

    第九课 函数的定义与调用 1:函数的定义     语法格式     function 函数名(数据类型 参数1){//function是定义函数的关键字         方法体;//statement ...

最新文章

  1. spring中Constructor、@Autowired、@PostConstruct的顺序
  2. 关于Apache不能解析html内容
  3. python networkx进行最短路径分析_NetworkX vs Scipy所有最短路径算法
  4. oracle会话资源,oracle session 会话
  5. fold函数_Java中使用Map and Fold进行函数式编程
  6. 个推的appid是指什么_推箱子软件介绍→安卓下最专业的推箱子软件(推箱快手)...
  7. 利用NCO 3.0 调用SAP中的函数
  8. 程序员必备的技能矩阵图
  9. mysql无法识别双引号_sqlite3迁移mysql问题集合攻略
  10. 统计自然语言处理基础_聚类
  11. python走起之第十三话
  12. 流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全
  13. arduino中利用LiquidCrystal内置的scrool函数实现屏幕文字滚动播放
  14. 计算机网络安全文明知识竞赛,网络安全知识竞赛
  15. Table does not have the identity property. Cannot perform SET operation.
  16. Lifecycle, LifecycleOwner, LifecycleObserver类讲解
  17. oracle 删除awr报告,学习笔记:Oracle awr入门 深入了解AWR报告
  18. 写一篇产品体验报告需从哪些方面入手?
  19. 【工具】vue excel导出
  20. 【生活工作经验 六】招聘与应聘相关结论

热门文章

  1. while(cina)在文件输入时,切换时会出现的问题
  2. java ognl 性能_OGNL详解
  3. tm matlab,[转载]关于matlab中textread
  4. 32 vs 开发wince_十年经验的大神谈如何学STM32嵌入式开发
  5. python 将列和索引的值变换_【编辑小组成长日记】Python学习第二期
  6. Eigen(1):Matrix模板类
  7. LabVIEW实现PCB电路板坐标定位(实战篇—2)
  8. Linux那些事儿 之 戏说USB(2)漫漫辛酸路
  9. LIO-SAM: 紧耦合的激光与惯导里程计方案
  10. PCL的PNG文件和计算点云重心