一、变量
1、变量类型
值类型:number,string,null,boolean,undefined
引用类型:object,function,array
从内存分析,值类型把每一个值都存储在变量相应的位置,把数值分块存在内存中,变量赋值后不会相互影响,引用类型变量相当于一个指针,好几个变量共用一个内存块,变量赋值会相当于修改指针指向,所有指向该值的变量均改变
//值类型
var a=100;
var b=a;
a=200;
console.log(b);//100
//引用类型
var c={age:23};
var d=c;
d.age=21;
console.log(c.age);//21
typeof运算符只能区分值类型的具体类型
console.log(typeof x); // undefined
console.log(typeof 10); // number
console.log(typeof 'abc'); // string
console.log(typeof true); // boolean
console.log(typeof null); //object
console.log(typeof function () {}); //function
console.log(typeof [1, 'a', true]); //object
console.log(typeof { a: 10, b: 20 }); //object
console.log(typeof NaN);//number
console.log(typeof new Number(10)); //object
2、变量计算-----强制类型转换
//字符串拼接
var a=100+10;
var b=100+'10';
console.log(a);//110
console.log(b);//'10010'
//==
console.log(100=='100');//true 100转化为字符串'100'
console.log(0=='');//true 都转化为false
console.log(null==undefined);//true 都转化为false
//if
var c=true;
if(c){
//...;
}
var d=100;
if(d){ //100转化为布尔值true
//...;
}
var e='';
if(e){ //''转化为布尔值false
//...;
}
//逻辑运算
console.log(10&&0); //0 遇false返回
console.log(''||'abc');//abc 遇true返回
console.log(!window.abc);//true window.abc是undefined 转化为false
//判断一个变量被当成true还是false
var f=100;
console.log(!!f);//true
二、双等和三等
1、双等==:先转换两个操作数再判断,相等返回true,不相等返回false
console.log(null==undefined);//true
console.log('NaN'==NaN);//false
console.log(5==NaN);//false
console.log(NaN==NaN);//false
console.log(false==0);//true
console.log(true==1);//true
console.log(undefined==0);//false
console.log(null==0);//false
console.log('5'==5);//true
转化规则:
有一个操作数是布尔值时比较前将其转化为数值
字符串与数值比较将字符串转化为数值
一个操作数是对象一个不是。调用对象valueOf()方法转化为基本类型值
null和undefined比较规则: 比较相等性之前不能将其转化成任何值
有一个操作数是NaN返回false,NaN==NaN返回false
两个操作数都是对象则比较它们是不是同一个对象
2、三等===:操作数必须是相同类型才可比较
console.log(null===undefined);//false
3、使用情况:
if(obj.a==null){
//相当于obj.a===null||obj.a===undefined的简写 JQ源码的写法
//....
}
三、内置函数—数据封装类对象
1、boolean,number,string,object,array,function,date,RegExp,error
2、单体内置对象:global对象,math对象
四、理解json
json就是一个内置js对象
常用API
1、把对象变成字符串
JSON.stringify({a:10,b:20}) //{"a":10,"b":20}
2、把字符串变成对象
JSON.parse('{"a":10,"b":20}') //Object