## 数据类型的核心操作原理
>JS中的数据类型(值类型)
> + number
> + string
> + boolean
> + null
> + undefined
> - 引用数据类型
> + 对象
> + {}普通对象
> + []数组
> 函数
> + function 普通函数
> + 类
> + ...
JS代码运行在浏览器中,是因为浏览器给我们提供了一个供js代码执行的环境 ->全局作用域(window/global)
```javascript
var a = 12;
var b = a;
b = 13;
console.log(a);//a->12
var o = {name:'yy'};
var p = o;
p.name='kpf';
console.log(o.name);//a->kpf
var m = {name:'yy'};
var n = m;
n ={name:'yy'};
console.log(m.name);//a->yy
//任意数求和
function fn(){
var ary = Array.prototype.slice.call(arguments);
eval(ary.join('+'));
}
fn(12,13);
```
### 值类型
> 直接按值操作,例如:var a = 12;直接把12这个值赋值给变量a(让a变量和12这个值建立了链接的关系)
### 对象数据类型
> 在JS中遇到对象,会严格按照如下的步骤操作:
> 1、浏览器未其开辟一个新的内存空间,未了方便后期可以找到这个空间,浏览器给空间分配一个16进制的地址
> 2、按照一定顺序,分别的把对象键值对存储到内存空间中
> 3、把开辟内存的地址赋值给变量(或者其他的东西)
### 函数的操作
> 创建函数
> 1、先开辟一个新的内存空间(未其分配了一个13进制的地址)
> 2、把函数中编写的js代码当做'字符串'存储到空间中(函数只有创建不执行没有意义)
> 3、把分配的地址赋值给声明的函数名(function fn 和 var fn 操作原理其实相同,都是在当前作用于中声明了一个名字,一个是变量名,一个是函数名)
> 执行函数