变量:  存储数据的容器
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.文件夹:引用值; 文件夹快捷方式:引用地址; 通过快捷方式可以找到文件夹,也可以修改里面的东西;
补充中....

转载于:https://www.cnblogs.com/Ivangel/p/3682868.html

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

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

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

  2. 教你轻松搞定javascript中的正则

    文章目录 1 正则表达式概述 1.1 什么是正则表达式 1.2 正则表达式特点 2 正则表达式在Javascript中的使用 2.1 创建正则表达式 2.2 测试正则表达式 test 3 正则表达式中 ...

  3. 渲染预览PDF文档,轻松搞定,这方案真香!

    渲染预览PDF文档,轻松搞定,这方案真香! 1.前言 2.列举一些文档预览解决方案: 3.列举一些文档解析生成解决方案: 4.案列赏析 5.准备工作: 6.模板讲解: 7.代码实现: 8.效果图: 9 ...

  4. 韩顺平轻松搞定网页设计(html+css+js),韩顺平轻松搞定网页设计方案(html+css+js)之javascript现场授课笔记(完整版).doc...

    2011韩顺平轻松搞定网页设计(html+css+js)之 javascript现场授课笔记(完整版) 视频18整和19的前半部分不用看 Javascript的基本介绍 JS是用于WEB开发的脚本语言 ...

  5. [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版

    前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知 ...

  6. JavaScript中的预解析(变量提升)介绍!

    今天小千为大家介绍一下JavaScript中的预解析(变量提升).从什么是预解析及变量的预解析和函数的预解析及加载流程进行学习(注意:我们这里说的ES5中的预解析). 什么是解析 首先代码执行肯定需要 ...

  7. 无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)

    我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一 ...

  8. [译] 12步轻松搞定python装饰器 - 简书

    [译] 12步轻松搞定python装饰器 - 简书 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编 ...

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

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

最新文章

  1. Python:Scrapy实战项目手机App抓包爬虫
  2. win7安装omnetpp-4.6
  3. Windows磁盘驱动基础教程
  4. valueOf与toString方法研究
  5. .net remoting在wpf中的应用
  6. 计算机软件集成项目工程师上海,2021年上海系统集成项目管理工程师报名时间和报名入口...
  7. [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]
  8. 安装Windows7出现:”安装程序无法创建新的系统分区 也无法定位系统分区“ 终极解决方案...
  9. php sha1漏洞,PHP sha1()函数
  10. 还不懂!软件测试(功能、接口、性能、自动化)详解
  11. 51nod1297 管理二叉树
  12. JDK历史版本主要新特性
  13. BZOJ4569 SCOI2016萌萌哒(倍增+并查集)
  14. MySQL增删改查--之删
  15. 我们应该能够识别的表象和本质
  16. 洛谷刷题C语言:闰年判断、Apples、洛谷团队系统、肥胖问题、三位数排序
  17. 【UE4 005】自定义人物角色(Charactor) 替换小白人
  18. 一文了解人工智能神经网络的原理
  19. css扇子展开,CSS3 绝妙的扇形折叠展开加载动画
  20. Linux串口编程 —— 发送的数据无法被接收,且被原封不动返回

热门文章

  1. Ubuntu 下 redmine 安装配置
  2. aspects to consider for a recommendation letter
  3. systematic literature review how to write it?
  4. where is lingang city in shanghai?
  5. 关于联合利华:我的第一次正式实习的单位!撒花!
  6. 【转】投影矩阵的推导
  7. ubuntu配置文件对照表
  8. NodeJs 创建一个简单的服务
  9. 通信大数据应用未来还有很大的想象空间
  10. 〔译〕TypeScript 2.0 正式发布