# 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選擇器