变量类型(值类型、引用类型)
1.值类型的特点:不会因为赋值相互干扰
var a =100; var b = a;//b=100 a =200; var c = b;//c=100 b =300; alert(c);
2.引用类型{对象、数组、function}
1.可以无限制扩展属性,节省空间
//对象 //abc三个变量同时把指针指向真实的对象 var a = {age:20}; var b = a; b.age = 21; c = b; c.age = 22; alert(b.age);//b.age=22;a.age=22;
2.引用类型可以无限制扩展属性
a.name ='lucy'; a.bb = true; a.ccc=10000; console.log(a);//object{age:20,name:'lucy',bb:true,ccc:100} //数组 var arr =[1,2,3]; arr.age = 21;//arr[1,2,3,age:21] var arr2 = arr; arr2.age = 22;//arr[1,2,3,age:22] console.log(arr);//[1,2,3,age:22] //function function fn(){}; fn.age = 21; var fn1 = fn; fn1.age = 22; console.log(fn.age);//22
*typeof
//1.可以区分值类型的强制类型(string,number,undefined,boolean) //2.不能区分引用类型(除了function),typeof null---->object //3. typeof null;//object typeof fn;//function typeof a;//object
3.变量计算(强制类型转换)
1.字符串拼接的时候会有强制类型转换
var a = 100 +10;//110 var b =100 +'10';//'10010'
2.==
100=='100';//true ''==0;//true null == undefined;//true
3.===
100==='100';//false ''===0;//false null === undefined;//false
4.if的强制类型转换
if(100){console.log(110)}//110 if(''){console.log(110)}//undefined
5..逻辑运算
10 && 0;//0 ''|| 'abc';//'abc'
6.用一个简单的方式知道它在if里是true还是false
var a = 100; !!a//true var b = ''; !!b;//false
1.在常见的变量中那些会在if里边当false用
if(0){} //false if(NaN){} //(nots a number)false if(''){} //false if(null){}//false if(false){}//false if(undefined){}//false 2.在if中当true用: !!100;//true !!'abc';//true
7.内置函数
Object //function object(){native code} Array //function Array(){native code} Function //function Function(){native code}
8.内置对象
Math、JSON
9.== 和 ===
var obj = {}; //看一个对象的属性存不存在的时候用== if(obj.a == null){} //在一个函数中看a的参数是否存在的时候用== function (a,b){ if(a == null){} }
* 这两种情况的共同点:
要保证这个==前面的不管是a是obj.a它是定义的