1.变量类型和计算

变量类型(值类型、引用类型)

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它是定义的

你可能感兴趣的:(1.变量类型和计算)