引用(reference)、作用域(scope)、闭包(closure)以及上下文(context)是JavaScript重中之重的基础,也是学习好JavaScript的基础。在这里我以浅显的理解给大家分享一下:

一、首先说明下引用(定义):引用是指向一个对象实际位置的指针;

说明:在这里大家也许这话不大好理解,浅显地说:“引用” = “别名”。(我想)也就是在编程语言给变量、对象…..等起个名称,以便于在需要的时候进行调用。

变量也是对象,那下面就以变量简单的事例为例

例如:假如有个变量 a, 想在下次用的时候引用它,给它起个别名 b;

Int a;

Int &b =a;//记住:指向 对象实际位置的指针。(嘿嘿…如果你对指针很理解,那下面就不用看了,编程嘛,学习不会的知识)

注意 1:在这里是对变量的引用,内存并不为它开辟实际的内存单元,b和对代表同一变量单元,在申明一个引用时,必须同时使之初始化。(只有申明,没有定义,只是申明它和原有的某一变量的关系。在引用时 a 、两值同时随之其中之一的变化而变化)。

注意2:在你申明一个引用后(b),该引用一直与其代表的变量相联系,不能再作为其它变量的别名(一一对应)。

二、学习了引用,下面理解下引入引用的目的:

一句话:利用其作为函数的参数,以扩充函数传递数据的功能。(在下一篇文章里详细比较了参数传递的形式)

在这里出现一个我目前很不明白的现象(希望读者赐教,不胜感激):

从引用的概念上说是指向对象实际位置的指针;但是在JavaScript里出现了(在C++语言未出现,并且明文规定不可以建立引用的数组)原因(个人):数组名只代表数组的首地址,本身不是一个占有存储空间的变量

例如:

///建立一个数组的对象

Var items new { items1, items 2, items 3};

Var itemRef = items;//数组对象的引用

//将一个元素添加到数组中

Items.push(“items4”);

引用reference作用域scope闭包closure上下文context用法的更多相关文章

  1. (60)Wangdao.com第十天_JavaScript 函数_作用域_闭包_IIFE_回调函数_eval

    函数        实现特定功能的 n 条语句封装体. 1. 创建一个函数对象 var myFunc = new Function(); // typeof myFunc 将会打印 function ...

  2. js面试题知识点全解(一作用域和闭包)

    问题: 1.说一下对变量提升的理解 2.说明this几种不同的使用场景 3.如何理解作用域 4.实际开发中闭包的应用 知识点: js没有块级作用域只有函数和全局作用域,如下代码: if(true){ ...

  3. 聊一下JS中的作用域scope和闭包closure

    聊一下JS中的作用域scope和闭包closure scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解,closure就不一样了.我就被这个概念困扰了很久 ...

  4. 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】

    上文简单介绍了作用域,本文把作用域和上下文环境结合起来说一下,会理解的更深一些. 如上图,我们在上文中已经介绍了,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了.而不 ...

  5. 【学习笔记】深入理解js原型和闭包(13)——【作用域】和【上下文环境】

    上文简单介绍了作用域,本文把作用域和上下文环境结合起来说一下,会理解的更深一些. 如上图,我们在上文中已经介绍了,除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了.而不 ...

  6. 深入理解JavaScript闭包(closure)

    最近在网上查阅了不少javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ...

  7. 举例详细说明javascript作用域、闭包原理以及性能问题(转)

    转自:http://www.cnblogs.com/mrsunny/archive/2011/11/03/2233978.html 这可能是每一个jser都曾经为之头疼的却又非常经典的问题,关系到内存 ...

  8. javascript 函数和作用域(闭包、作用域)(七)

    一.闭包 JavaScript中允许嵌套函数,允许函数用作数据(可以把函数赋值给变量,存储在对象属性中,存储在数组元素中),并且使用词法作用域,这些因素相互交互,创造了惊人的,强大的闭包效果.[upd ...

  9. JavaScript 作用域和闭包——另一个角度:扩展你对作用域和闭包的认识【翻译+整理】

    原文地址 --这篇文章有点意思,可以扩展你对作用域和闭包的认识. 本文内容 背景 作用域 闭包 臭名昭著的循环问题 自调用函数(匿名函数) 其他 我认为,尝试向别人解释 JavaScript 作用域和 ...

随机推荐

  1. php用PHPWord库生成word文档的例子

    <?php require_once '../libs/PHPWord/PHPWord/IOFactory.php'; require_once '../../config.php'; $PHP ...

  2. 学习如何看懂SQL Server执行计划(三)——连接查询篇

    三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多嵌套循环可以理解为就是两层For循环,外 ...

  3. IOC模式理解

    理解IOC inversion of control  控制反转  与  DI   Dependency Injection  依赖注入概念之前,我们需要知道在一个系统的设计过程中,降低各模块之间的相 ...

  4. SQLite中的时间日期函数

    SQLite包含了如下时间/日期函数: datetime().......................产生日期和时间 date()...........................产生日期 t ...

  5. akka源码导读

    akka的actor模型提供了强大的并发,本人就akka源码进行了详细的阅读,下面是一些体会. 1.object SystemMessageList: @tailrec private[sysmsg] ...

  6. 【学习】js学习笔记:对象的一些基础知识

    1.创建对象 //构造函数方法 function fun1(){} var obj=new fun1(); //Object方法,O要大写 var obj1=new Object(); //json方 ...

  7. btsync 分享资源

    Btsync是一款跨平台软件,可以在不同的设备之间共享文件. Btsync类似于BT下载,用户对用户(多用户)之间的传送. 文档的分享者可以将资源放到文件夹下,生成共享Key,分享给接受者,接受者只需 ...

  8. RandomAccessFile类进行文件加密

    文件加密/解密示例. package io; import java.io.*; public class encrypt { private File file; //存储文件对象信息 byte[] ...

  9. JS难点--面向对象(封装)

    我觉得js的难点之一就是面向对象编程. 面向对象 它是一种编程思想,它在写法上比面向过程相对来说复杂一些: 以下是我学习中关于面向对象的知识点总结:   1.什么是对象 从广义上说,"一切皆 ...

  10. Nginx监控-Nginx+Telegraf+Influxb+Grafana

    搭建了Nginx集群后,需要继续深入研究的就是日常Nginx监控. Nginx如何监控?相信百度就可以找到:nginx-status 通过Nginx-status,实时获取到Nginx监控数据后,如何 ...