1.變量相關javascript
數據保存分爲一次或屢次使用的變量,
若是屢次使用的變量則須要容器去存儲,變量就是保存數據的容器java
2.數據類型web
js 中的數據類型分爲 基本類型 與 引用類型
基本類型 :string ,boolean ,number ,null undefined
基本類型是不可修改的;
引用類型 :除去基本類型的數據 ,其餘一切的對象都是引用類型;
基本對象 :上的方法與屬性都是經過基本對象的包裝對象去提供給基本對象去使用;數組
3.棧與堆簡述瀏覽器
棧內存的大小是固定且有序的,堆內存是大小不固定且無須的;
棧內存的執行效率數倍與堆內存;
基本類型保存在棧內存中;
引用類型的索引地址保存在棧內存;函數
4.變量相等的比較spa
基本類型比較 : 進行直接比較 不一樣類型的要轉換爲同一類型後比較;
引用類型比較 :要對引用類型的每一項進行對比;code
5.形參與實參regexp
基本類型參數 :至關於基本類型賦值因此函數體的形參與傳遞的實參是不一樣的獨立個體
引用類型參數 :至關於傳遞了對象的引用,因此操做對象是會引發函數體外部對象的更改!對象
6.檢測數據類型
typeof 能夠完美區分基本類型 可是不能區分對象, 數組 ,正則返回Object 有的部分瀏覽器 返回function
instanceof 能夠區分引用類型, 不能區分基本類型, 基本類型和他的包裝對象始終返回false
- 示例方法
/** * @function 判斷對象類型 * @param obj 要獲取類型對象其值能夠爲任意類型 * @param {String} type 可選參數,爲預期的對象類型 * @return {String|Boolean} 若是傳遞一個參數則返回對象的對象類型字符串 ,傳遞兩個參數則返回是否符合參數 type 預期的 Boolean 值 */ function getType(obj, type) { //判斷若是隻傳遞了對象,沒有傳遞預期類型則默認返回對象類型字符串 if (arguments.length === 1) { return typeVal(obj); } return typeVal(obj) === type.toLowerCase(); //得到類型 function typeVal(obj) { var typeStr = typeof obj; if (typeStr !== 'object') { return typeStr; } if (obj instanceof Array) { return 'array' } if (obj instanceof RegExp) { return 'regexp' } if (!obj && typeof (obj) !== 'undefined' && obj != 0) { return 'null'; } return 'object' } }
7.變量的做用域
做用域分爲:全局做用域,局部做用域[函數做用域];
js 函數中變量,在不是嚴格模式下,若是函數體內部不申明直接使用,會出現變量提高,自動轉爲全局做用域;
js 不存在塊級做用域;
8:變量對象與做用域鏈
js 全部全局做用域中的全部屬性,方法. 都是屬於window; window就是最大的變量對象;
js 局部變量的變量對象,是用來被js引擎去使用的;
js 做用域鏈是由最小層逐步向最外層[瀏覽器上爲window對象]查找,而不能反向查找
js 能夠延長變量對象;例如 with方法
//不推薦使用 多處使用會形成做用域鏈混亂,不利於維護 //切不支持嚴格模式 with(obj){ obj.name='名稱' }
9:js解析機制
預解析 --> 逐行解讀代碼
預解析 第一步讀取全局屬性 ,而且將全部全局屬性 = undefined [查找變量申明詞後的變量] ,而方法則會所有讀取加載
第二步則是將全部局部做用域中的屬性方法與全局的相同處理
[若是在預解析變量和函數同名衝突,則會拋棄變量;若是同名函數衝突,則已最後出現的爲準];
[函數的參數也至關於局部變量,因此預解析也會去解析參數]
[js 預解析是分標籤進行,分文件進行,每一個script標籤都會獨立預解析 ]
預解析完成後 -> js引擎纔會開始逐行分析執行代碼
10:內存相關
1.垃圾收集機制 GC
做用:釋放無用的數據,回收內存
方式:通常分爲主動回收,與手動回收機制
原理:找出無用數據,打上標記,釋放其內存:週期性執行
標識無用數據的策略: 標記清楚 、 引用計數 [ js 採用標記清除來標識無用數據的策略 ]
[js 採用主動回收,無需手動去回收 ]2. 內存管理
系統分配內存 :桌面應用程序 > web瀏覽器
js釋放內存,將全局變量值置爲null ,解除引用,GC會在下一次執行是回收 [ 適用於絕大部分全局變量 ]
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">