數據類型核心操做步驟和原理
JS中的數據類型
-
基本數據類型(值類型)
-
number
-
string
-
boolean
-
null
-
undefined
-
引用數據類型
-
對象
-
{}普通對象
-
[]數組
-
/^$/正則
-
Math 對象數據類型的
-
。。。
-
函數
JS代碼運行在瀏覽器中,是由於瀏覽器給咱們提供了一個供js代碼執行的環境 -> 全局做用域(window/global)
var a=12;
var b=a;
b=13;
console.log(a);
var o={name:"helloworld"};
var p=o;
p.name='席超';
console.log(o.name);
var m={name:'helloworld'};
var n=m;
n={name:'面向對象編程'};
console.log(m.name);
function fn(){
var ary=array.prototype.slice.call(arguments);
return eval(ary.join('+'));
}
fn();
值類型
直接按值操做,例如:var a=12;直接把12這個值賦值給變量a (讓a變量和12這個值創建了鏈接的關係)
對象數據類型
一、瀏覽器爲其開闢一個新的內存空間,爲了方便後期能夠找到這個空間,瀏覽器給空間分配一個16進制的地址
二、按照必定順序,分別的把對象鍵值對存儲到內存空間中
三、把開闢內存的地址賦值給變量(或者其餘的東西),之後變量就能夠經過地址找到內存空間,而後進行一些操做
函數的操做
建立函數
一、先開闢一個新的內存空間(爲其分配了一個16進制的地址)
二、把函數體中編寫的js代碼當作字符串存儲到空間中(函數只建立不執行沒有意義)
三、把分配的地址賦值給聲明的函數名(function fn和var fn操做原理其實相同,都是在當前做用域中聲明瞭一個名字,此處兩個名字是重複的)
執行函數
目的:執行函數體中 的代碼
一、函數執行的時候,瀏覽器會造成一個新的私有做用域(只能執行函數體中的代碼)供函數體重代碼執行
二、執行代碼以前,先把建立函數存儲的那些字符串變爲真正的js表達式,按照從上到下的順序在私有做用域中執行
一個函數能夠被執行N次,每一次執行相互之間互不干擾(後面會學習二者之間創建的間接關係)
造成的私有做用域把函數體中的私有變量等都包裹起來了(保護起來了),在私有做用域中操做私有變量和外界不要緊,外界也沒法直接的操做私有變量,咱們把函數執行造成的這種保護機制叫作閉包。
* 學習:知其然而知其因此然*