变量:  存储数据的容器
   
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. bootstrap之 Badge 角标

    添加 .am-badge class 到 <div> 或者 <span> 元素. 默认样式     <span class="am-badge"> ...

  2. Spring配置扫描mybatis的mapper文件注意:

    一般会将不业务的mapper文件放到不同的包中: spring配置扫描就需要配置下面的方式(两个*): <!-- mybatis文件配置,扫描所有mapper文件 --> <bean ...

  3. Python学习(二) 运行Python,编译Python

    无论windos还是Linux只要安装了python,配置好了环境变量,则在命令行输入python这个命令的时候就会进入交互模式.在这个模式下可以进行一些简单的python代码编写.退出可以使用exi ...

  4. 定义#define

                                                    定义符号常量   当我们不止一次用到某个符号常量时,常选择对符号变量进行定义,这样就能当成一般常量来用. ...

  5. px,dp,dip,sp,in,mm,pt详细分析

    px,dp,dip,sp,in,mm,pt详细分析 px   :(pixels),屏幕的像素点,不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip  :(devi ...

  6. sql server数据库实现保留指定位数小数的函数

    有时候需要对一个特定的含有小数点的数字保留指定位数,比如"123.123600". 在数据库中以函数的形式实现如下: USE [数据库名称] GO /****** Object: ...

  7. git 的一些使用和命令

    http://git.oschina.net/progit/2-Git-%E5%9F%BA%E7%A1%80.html(pro git)   git branch  (展示本地当前的所有分支,以及当前 ...

  8. PHP数组排序函数array_multisort()函数详解

    这个函数因为用到了,并且在网上找了半天终于找到了一个写的通俗易懂的文章,在这里分享给大家. 原文链接:http://blog.163.com/lgh_2002/blog/static/44017526 ...

  9. 好久没来了,重出江湖,共享个python34+pyqt+pyserial串口工具源码

    真的是好久没来了,写博客对我来说还真是难坚持下来,热度一过就忘了,就算什么时候想起来也懒得去敲一个字,这次真不知道能坚持多久,随心吧,想写写,不想写也不勉强自己. 最近由于工作调试需要自己写了一个带图 ...

  10. activity 的返回按钮

    http://www.2cto.com/kf/201210/160251.html 连续点击两次程序就退出程序,这是一个很有趣的程序功能,下来介绍一下我的实现方式(欢迎大家拍砖指点):   1.在Ac ...