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