变量:  存储数据的容器
   
1.声明        var
 
2.作用域       全局变量、 局部变量、 闭包(相对的全局变量);
 
3.类型         a.基本类型(undefined, null, boolean, number, string)   b.引用类型;(object, function),其实function 也是对象-->var a = new Function(alert('我也是对象'));
 
4. 类型转换    隐式转换(==, -, *, /, alert)、   显式转换(parseInt, parseFloat, Number, String, Boolean)。
 
5.命名规范     可由 数字、 字母、 下划线组成, 不能以数字开头, 不能使用关键字和保留字;匈牙利命名法。
 
上面的补充:
命名规范
    养成良好的变量使用习惯
        1.一个变量只存一种类型的数据,
        2.尽量减少对隐式转换的依赖,这样可增强程序的可读性,日后修改程序时不至于混乱,
        3.使用匈牙利命名法,
        4.使用局部变量时记得加  var 进行声明,不然会与全局变量冲突,   
 
作用域
    闭包: 子函数可以使用 父函数、祖先函数 的局部变量,(其实就是变种的 全局变量,这个变量在子函数眼中就是全局变量)
 
 
    javascript 预解析机制:   
   已补充,请看这:轻松搞定javascript预解析机制
 
 
类型
    内存分布(这里所说的内存是 RAM,电脑所有程序都在这运行,详情请问度娘),
    首先,将内存分为两个区域,   a.栈区   b.堆区
    JS把 基本类型 存在栈区,  把引用类型放在堆区
    为什么呢,他们有什么特点吗?
 
基本类型 -----> 固定空间 ------体积小 ------> 所以是值传递(就是复制一份传递)  ------> 存放在 栈 中 --------> 查找速度快(放在固定文件夹,当然快啦)----- 自由度小(只能点菜)

 
引用类型 -----> 无固定空间 ------体积通常比较大------> 复制很耗性能,所以是引用传递(房子只有一间,就是配多一条钥匙)  ------> 存放在 堆 中 ( 一个文件夹放N种格式文件 )--------> 查找速度相对慢 ----自由度大(DIY菜式)
 
    下面举两个例子
    1. 房子:引用值; 钥匙:引用地址;  通过钥匙可以找到房子,也可以修改里面的东西;
    你朋友来了你所在的城市,晚上没地方睡,就去酒店,你有几套房子,你说“兄弟,来到我的地盘,怎么能让你去住酒店呢,我那边还有几套房子,你来住”,这时,你是把房子背起来,直接送他那呢,还是配一条钥匙给他呢?
    很明显,必须是配一条钥匙!
    这和引用类型是类似的, 引用类型(房子)通常是很大的,直接拷贝一份是很消耗性能的,所以直接用引用地址(钥匙)会方便很多;
    再引申到另一个问题,如果你又把 这个 引用值 赋值给别一个变量, 其实就是相当把你朋友给你的钥匙,你又复制了一条,给了别人,那么那个人在房子里移动一下沙发什么的,改变的还是那个房子(引用值)里的东西,所以你过去时那沙发位置也就变了;
    
    2.文件夹:引用值; 文件夹快捷方式:引用地址; 通过快捷方式可以找到文件夹,也可以修改里面的东西;
    
 补充中....
 

轻松搞定javascript变量(闭包,预解析机制,变量在内存的分配 )的更多相关文章

  1. 轻松搞定javascript预解析机制(搞定后,一切有关变态面试题都是浮云~~)

    hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解 ...

  2. 轻松搞定javascript原型链 _proto_

    //如有错误或不同观点,欢迎批评与讨论! 首先,prototype出现的目的,是为了解决 代码重用 的问题 , prototype 相当于是在内存上划分出一个公共的区域, 专用于存放 实例化对象 的相 ...

  3. 轻松搞定javascript日期格式化问题

    Date.prototype.format = function(f){ var d = this f = f || "yyyy-MM-dd hh:mm:ss" return f. ...

  4. 从var func=function 和 function func()区别谈Javascript的预解析机制

    var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function ...

  5. 人脸识别JavaScript也可以轻松搞定

    前言 是不是觉得不可思议,js已经强大到这个地步? 是的,js日新月异,它在不断的进步.只要稍不留神,那我们都只能望尘莫及了. 今天我们就来看看是什么js插件可以如此厉害? 人脸识别JavaScrip ...

  6. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/   基本上一开始很难搞定python的装 ...

  7. 第112天:javascript中函数预解析和执行阶段

    关于javascript中的函数:  1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前  2.执行 :从上到下执行,但有例外(setTimeout,setInterval,aja ...

  8. 【转】轻松搞定FTP之FlashFxp全攻略

    转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...

  9. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

随机推荐

  1. 线程间通信的三种方式(NSThread,GCD,NSOperation)

    一.NSThread线程间通信 #import "ViewController.h" @interface ViewController ()<UIScrollViewDel ...

  2. C++ 常见容器

    迭代器. 基本介绍(来源于网络):迭代器是一种抽象的概念.能够遍历容器内的 部分/全部 元素.每个迭代器中包含着元素的地址.  它可以将 抽象容器 和 泛型算法 结合起来.   大致原理: 1)迭代器 ...

  3. Java中的static关键字

    写在前面: 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰 ...

  4. struts2框架的核心内容

     Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Ac ...

  5. make clean与make distclean的区别

    make clean仅仅是清除之前编译的可执行文件及配置文件. 而make distclean要清除所有生成的文件. Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一 ...

  6. [汇编语言]-第七章 SI和DI

    1- SI和DI是8086CPU中和bx功能相近的寄存器, SI和DI不能够分成两个8位寄存器来使用, 下面的三组指令实现了相同的功能: (1)  mov bx,0 mov ax,[bx] (2) m ...

  7. Oracle EBS-SQL (OM-2):检查OM常用表

    --多语言视图 ALTER SESSION SET NLS_LANGUAGE=AMERICAN ; --组织化视图 BEGIN FND_CLIENT_INFO.set_org_context(218) ...

  8. DotNet 资源大全(Awesome最新版)

    发表时间:2016-09-20 21:34:58   编辑:机器猫   阅读:136次   目录 API 应用框架(Application Frameworks) 应用模板(Application T ...

  9. 在android画面切换时设置跟随变动的小圆圈

    首先还是老规律,上传两张效果图: 第一张图:     第二张图:    前言:我们经常在使用各类安卓APP的时候发现会有如图所示的小圆圈显示当前页所在的,甚至一般来说我们的android桌面上也应该有 ...

  10. URL组成介绍

    1.2. HTTP request ----------------- First, let's consider this HTTP request : Line Contents number 1 ...