/*数据类型 :
//1.分类:
//基本数据类型:string boolean number null undefined symbol
//引用(对象)数据类型:Object
// Function :一种特别的对象(可以执行)
// Array :一种特别的对象(数值下标,内部数据是有序的)
//2.判断:
//1.typeof: 可以判断string/boolean/number/undefined/function 不能判断null与object object与array
typeof判断出来的结果是字符串 */
var a='abc'; console.log(typeof a ,typeof a ==='string');//'string' true
var a=null; console.log(typeof a ,a===null);//object true
console.log(null == undefined,null === undefined);//true false
//2.instanceof:判断对象的具体类型
var obj={}; console.log(obj instanceof Function ,obj instanceof Object ,obj instanceof Array)//判断obj是否为函数/对象/数组 false/true/false
var a=function(){}; console.log(a instanceof Function ,a instanceof Object);//判断a是否为函数 true a 是否为对象 true
var b=[]; console.log(b instanceof Array ,b instanceof Object);//判断b是否为数组 true b是否为对象 true
//3.===:可以判断undefined null
//实例:实例对象:根据类型对象创造的实例对象
//类型:类型对象
function Person (){}//构造函数 类型
var p=new Person() //p就是实例对象
//1.undenfined与null的区别: undefined是定义但是没有赋值
// null是定义并且赋值为null
var a ; console.log(a); //undefined
var a=null; console.log(a);//null
//2.什么时候给变量赋值为null
//1)初始赋值
var a =null; //初始赋值为null,表明将要赋值为对象
a=['aaa',12]; //确定对象就赋值
//2)最后赋值
var a=null; //让b指向的对象成为垃圾对象(被垃圾回收器回收) 也就是释放内存
//垃圾对象:没有引用指向的对象
/*3.严格区分变量类型与数据类型
//数据类型: 基本类型
//对象类型
//变量类型(变量内存值的类型): 基本类型:保存的基本数据
//引用类型:保存的地址值
//变量本身没有类型
//什么是数据? 存储在内存中代表特定信息的东西 本质为010101
//数据的特点: 可传递 可运算
//一切皆数据
//内存中所有操作的目标是数据
//算术运算
//逻辑运算
//赋值
//运行函数
//什么是内存? 内存条通电后产生的可存储数据的空间(临时的)
//内存的产生与死亡:内存条(电路板)==》通电==》产生内存空间==》存储数据==》处理数据==》断电==》内存空间和数据都消失
//一块内存的2个数据: 内部存储的数据 地址值数据
//内存的分类: 栈空间 :全局变量 局部变量
//堆空间 :对象
//什么是变量? 可变化的量,由变量名和变量值组成
//每个变量都对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据
//数据,内存,变量的关系:
//内存是用来存储数据的空间
//变量是内存的标识
//问题: var a=xxx ,a内存中到底保存的是什么
//如果xxx是基本数据,保存的就是这个数据
//如果xxx是对象,保存的就是这个对象的地址值
//如果xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)
//关于引用变量赋值问题:
//2个引用变量指向同一个对象,通过一个变量修改对象内部数据,另一个变量看到的是修改之后的数据
//2个引用变量指向同一个对象,让其中一个变量指向另一个对象,另外一个变量仍指向前一个对象*/
var a={age:12}
var b=a;
a={name:'fff',age:13}
b={age:15}
console.log(a.name,a.age,b.age); //fff 13 15
function fn(obj){
obj={age:17} //成为垃圾对象
}
fn(a)
console.log(a.age); //13