# js
标签:js
---
[js参考][1]
---
## 1.js认识
##### 1. 注释
```
//单行注释;
/* */多行注释;
```
##### 2. 标识符
```
第一个字符任意Unicode字母、美元符号($)和下划线(_)。
第二个字符及后面的字符,还可以用数字。
变量名区分大小写,如:A与a是两个不同变量。
不允许使用js关键字和保留字做变量名。
```
##### 3. 变量提升
```
js先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。
请注意,变量提升只对var命令声明的变量有效,如果一个变量不是用var命令声明的,就不会发生变量提升。
```
### 1. 变量
```
var a,b; //声明多个变量;
a //去掉var后delete命令可以删除;
```
### 3. 浏览器
浏览器核心:渲染引擎、js引擎;
| 渲染引擎 | 渲染引擎 | 0 |
| ------ | -----: | :----: |
| Firefox | Gecko | 0 |
| Safari | WebKit | 0 |
| Chrome | Blink | 0 |
[1]: http://javascript.ruanyifeng.com/
## 2.js闭包
广义上说:是指一个变量在它自身作用域被使用了,就叫发生了闭包。
粗鲁地理解:闭包就是能够读取其它函数内部变量的函数。
在js中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单粗暴地理解成“定义在一个函数内部的函数”,即一个函数嵌套了另一个函数。
链式作用域,子对象会一级一级地向上寻找所有父对象的变量。
作用:
1.读取函数内部的变量
2.令这些变量的值始终保持在垃圾(内存)回收机制中。
注意事项
函数中的变量都保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
解决方法是,在退出函数之前,将不使用的局部变量全部删除。闭包会在父函数外部改变父函数内部变量的值。
所以,当你把父函数当作对象使用,把闭包当作它的公用方法,把内部变量当作它的私有属性,不要随便改变父函数内部变量的值。
## 2.js选择器