变量类型(值类型、引用类型)
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它是定义的