因为实验室项目要用,所以最近在学习OpenLayers,但是从来没有做过前端呀,坑爹的,硬着头皮上吧

反正正好借这个机会学习一下JS,本来对这门语言也挺感兴趣的,多多少少写过一下JS代码了,差不多学一些里面的特殊概念了

以前一直觉得闭包这个词太神秘,所以先选这个概念了

参考资料:《JavaScript高级程序设计》

      博客:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures(主要是这一篇,代码来源)

         http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

         http://coolshell.cn/articles/6731.html

代码里面有注释,就不写太多了。

<!--闭包是指有权访问另一个函数作用域的变量的函数-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--<a href="#" id="size-12">12</a>-->
<!--<a href="#" id="size-14">14</a>-->
<!--<a href="#" id="size-16">16</a>--> <script language="JavaScript">
// function makeFunc(){
// var name = "Mozilla";
// function displayName(){
// alert(name);
// }
// return displayName;
// }
// var myFunc = makeFunc();
// myFunc(); // function makeAdder(x){
// return function(y){
// return x+y;
// };
// }
// var add5 =makeAdder(5);
// var add10=makeAdder(10);
// document.writeln(add5(2));
// document.writeln(add10(2)); //闭包允许将函数与其所操作的某些数据(环境)关连起来。这显然类似于面向对象编程。
//在面对象编程中,对象允许我们将某些数据(对象的属性)与一个或者多个方法相关联。
// function makeSizer(size){
// return function() {
// document.body.style.fontSize = size + 'px';
// };
// }
// var size12 = makeSizer(12);
// var size14 = makeSizer(14);
// var size16 = makeSizer(16);
//
// document.getElementById('size-12').onclick=size12;
// document.getElementById('size-14').onclick=size14;
// document.getElementById('size-16').onclick=size16;
//完成面向对象中的私有化
// var Counter = (function(){
// var privateCounter = 0;
// function changeBy(val){
// privateCounter+=val;
// }
// return {
// increment:function(){
// changeBy(1);
// },
// decrement: function () {
// changeBy(-1);
// },
// value:function(){
// return privateCounter;
// }
// }
// })();
// alert(Counter.value());
// Counter.increment();
// Counter.increment();
// alert(Counter.value());
// Counter.decrement();
// alert(Counter.value());
//如果不是因为某些特殊任务而需要闭包,在没有必要的情况下,在其它函数中创建函数是不明智的,
// 因为闭包对脚本性能具有负面影响,包括处理速度和内存消耗。 //例如,在创建新的对象或者类时,方法通常应该关联于对象的原型,而不是定义到对象的构造器中。
// 原因是这将导致每次构造器被调用,方法都会被重新赋值一次(也就是说,为每一个对象的创建)。 </script>
</body>
</html>

JavaScript闭包简单学习的更多相关文章

  1. JavaScript闭包简单应用

    闭包定义 在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包.简单说,闭包就是能够读取其他函数内部变量的函数. 闭包的作用: 1. 可以读取函数内部的变量 2. 让 ...

  2. django之JavaScript的简单学习2

    前言:ajax预备知识:json进阶 1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javascript对象: 请大家记住一 ...

  3. JavaScript 的简单学习2

    AJAX 一 AJAX预备知识:json进阶 1.1 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javas ...

  4. Javascript闭包简单理解

    提到闭包,想必大家都早有耳闻,下面说下我的简单理解.平时写代码.第三方框架和组件都或多或少用到了闭包.所以,了解闭包是非常必要的.呵呵... 一.什么是闭包简而言之,就是能够读取其他函数内部变量的函数 ...

  5. javaScript的简单学习

    JavaScript介绍 JavaScript跟java没半毛钱关系 JavaScript有三部分组成:ECMAScript,document object model,broswer object ...

  6. [javascript] Promise简单学习使用

    原文地址:http://www.cnblogs.com/dojo-lzz/p/4340897.html 解决回调函数嵌套太深,并行逻辑必须串行执行,一个Promise代表一个异步操作的最终结果,跟Pr ...

  7. JavaScript闭包,只学这篇就够了

    # 闭包不是魔法 这篇文章使用一些简单的代码例子来解释JavaScript闭包的概念,即使新手也可以轻松参透闭包的含义. 其实只要理解了核心概念,闭包并不是那么的难于理解.但是,网上充斥了太多学术性的 ...

  8. JavaScript闭包只学这篇就够了

    闭包不是魔法 这篇文章使用一些简单的代码例子来解释JavaScript闭包的概念,即使新手也可以轻松参透闭包的含义. 其实只要理解了核心概念,闭包并不是那么的难于理解.但是,网上充斥了太多学术性的文章 ...

  9. javascript闭包1

    javascript闭包 在学习javascript闭包之前,需要先了解一下"作用域链". 每一段javascript代码都有一个与之关联的作用域链(scope chain),这个 ...

随机推荐

  1. 浅谈辄止WCF:完成最基本的WCF项目(1)

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. WCF的所有服务都会公开契约.契约包 ...

  2. 《X86汇编语言:从实模式到保护模式》读书笔记之引言

    有幸结识了<X86汇编语言:从实模式到保护模式>一书.我觉得这本书非常好,语言活泼,通俗易懂,源码丰富,受益匪浅.读罢一遍,意犹未尽.于是打算再读一遍,并把自己的读书所学总结成笔记,一来给 ...

  3. nyoj 1208——水题系列——————【dp】

    水题系列 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述     给你一个有向图,每条边都有一定的权值,现在让你从图中的任意一点出发,每次走的边的权值必须必上一次的权 ...

  4. 自己实现C++的string类

    使用C++的朋友对string类都不会陌生,string类使用起来很是方便,比C的字符数组好用多了,但是我们能不能自己实现一个属于自己的string类呢? 实现一个具有基本功能的string类并不难, ...

  5. 关于如何绕开对通用VMware虚拟机检测的一些收集

    1,用记事本打开虚拟系统镜像文件的配置文件,这个文件扩展名为vmx,比如我的虚拟系统名为XP,那这个文件就叫XP.vmx,然后在其末尾添加这么一句,如下红色部分(注意,虚拟机不能在运行状态添加) mo ...

  6. MVC5 model常见的写法

    1.数据库表中为ID的字段 [Key] //关键字 [Required] //不为空 [Display(Name = "ID")] public int id { get; set ...

  7. SQL Server与Oracle有什么区别?

    1.可操作平台上: Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案.客户可以利用很多种第三方应用程序.工具.而SQL Se ...

  8. 今天研究Unity Ioc 框架

    今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...

  9. HDU 5007 字符串匹配

    http://acm.hust.edu.cn/vjudge/contest/122814#problem/A 匹配到字符串就输出,水题,主要是substr的运用 #include <iostre ...

  10. JS文本中间显示省略号

    众所周知,文本溢出显示省略号用CSS就可以: 单行文本: white-space: nowrap; text-overflow: ellipsis; overflow: hidden; display ...