1. 函数的作用域

作用域是指变量的存在的范围。javascript中有两种作用域,一种是全局作用域,变量在整个程序中一直存在,另一种是函数作用域,变量只存在于函数体内部。在函数体外部声明的变量就是全局变量,它也可以在函数体内部读取。

var v = 1;

function f(){
     console.log(v);
}

f();

上述这就是全局变量,函数体内部也可以使用。

function f(){
   var v = 1;
}

而这个就是局部变量,函数体外部无法读取。

2. 闭包

闭包就是定义在函数体内部的函数。

function f() {
  var c = function (){};
}

上诉代码中c是定义在函数体f中的,c就是闭包。

闭包的特点就在于,在函数体外部可以读取函数体内部的变量。

function f() {
  var v = 1;

  var c = function (){
    return v;
  };

  return c;
}

var o = f();

o();
// 1

上面的代码显示,原先在函数f外部,我们是没有办法读取内部变量v的。但是,借助闭包c,可以读到这个变量。

闭包不仅可以读取函数内部变量,还可以使得内部变量记住上一次调用时的运算结果。

function f(b) {
  return function () {
    return b++;
  }
}

var b= f(5);

b() // 5
b() // 6
b() // 7

函数内部的b变量,每一次调用都是在上一次调用时的值的基础上进行计算的。

javascript的函数(二)的更多相关文章

  1. JavaScript学习总结(二)——闭包、IIFE、apply、函数与对象

    一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div, ...

  2. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  3. javascript oop深入学习笔记(二)--javascript的函数

    一.概述: 函数是进行模块化程序设计的基础, javascript重的的函数不同于其他语言,每个函数都作为一个对象被维护和运行.通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或则讲函数作为参 ...

  4. Javascript 随机数函数 学习之二:产生服从正态分布随机数

    一.为什么需要服从正态分布的随机函数 一般我们经常使用的随机数函数 Math.random() 产生的是服从均匀分布的随机数,能够模拟等概率出现的情况,例如 扔一个骰子,1到6点的概率应该相等,但现实 ...

  5. JavaScript入门-函数function(二)

    JavaScript入门-函数function(二) 递归函数 什么是递归函数? 递归简单理解就是,在函数体里,调用自己. //我们在求一个10的阶乘的时候,可能会这么做 //写一个循环 var to ...

  6. javascript学习(二)--函数

    一.在JavaScript中,定义函数的方式如下: 1.第一种方式: function abs(x) { if (x >= 0) { return x; } else { return -x; ...

  7. javascript函数 (二 定义函数的三种方法)

    javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量 <html><head></head><body> <sc ...

  8. (转)Javascript匿名函数的写法、传参、递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...

  9. (转)javascript匿名函数的写法、传参和递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-0 ...

  10. 对于JavaScript的函数.NET开发人员应该知道的11件事

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天小感冒今天重感冒,也不能长篇大论.如果你是.NET开发人员,在进入前端开发领域的时候,对 ...

随机推荐

  1. 【非愚人】重要通知:04-01 贴吧继PHP资源之后又。。。

    贴吧继PHP资源之后又取消了JAVA,IOS等资源的贴,现在专注于Net,C++,Linux,平面设计.主要是为了让广大Net程序员具备全栈全平台牛人的潜力,故而取消那些干扰因素.Net的潜力和活力大 ...

  2. Visulalization Voronoi in OpenSceneGraph

    Visulalization Voronoi in OpenSceneGraph eryar@163.com Abstract. In mathematics a Voronoi diagram is ...

  3. Unity事件

    unity3d事件函数整理,事件,回调函数,消息处理 Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Star ...

  4. 详解Java中ArrayList、Vector、LinkedList三者的异同点(转)

    本文转自http://my.oschina.net/zzw922cn/blog/491631 一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayL ...

  5. Android Drawable、Bitmap、byte[]之间的转换

    转自http://blog.csdn.net/june5253/article/details/7826597 1.Bitmap-->Drawable Bitmap drawable2Bitma ...

  6. Mac OS apache php配置

    1.进入Apache配置文件sudo vi /etc/apache2/httpd.conf    找到#LoadModule php5_module libexec/apache2/libphp5.s ...

  7. 关于Docker官方CentOS镜像无法启动mysqld的总结

    很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动. 无法正常启动表现为两种情况: 1> 初始完数据库后,mysqld启动报错 2> syst ...

  8. 总结Oracle删除表空间遇到的问题

    问题1:删除表空间期间遭遇报错 ORA-29857 问题2:删除表空间期间遭遇 ORA-02429 问题3:表空间删除完毕,主机磁盘空间不释放 问题1:删除表空间期间遭遇报错 ORA-29857 删除 ...

  9. c#知识点总结

    1.如果要使用自动属性的话,必须2个都是自动属性, 不允许出现一个自动,一个非自动的情况,否则会报错. 2.命名规则,最好用动词+名词 比如 Is+Member+Valid ,方法的首字母大写,变量的 ...

  10. 使用脚本操作UpdatePanel中控件的问题

    假设有一个脚本(用js或者jQuery等类似手段编写),为UpdatePanel中的一个普通的TextBox赋值.如果你以为这样写: <head runat="server" ...