1.数据类型:值类型(Number,String,Boolean,undefined),引用类型(object(包含数组),Null),函数
2.typeod 判断所有的值类型,函数。引用类型无法区分(都是object)
3.深拷贝
3.深拷贝 const obj1 = { age:20, name:'aaa', address:{ city:'beijing' }, arr:[1,2,3] } const obj2 = deepClone(obj1); obj2.address.city = "shanghai"; console.log(obj1) /** * 深拷贝 * @param {Object} obj 要拷贝的对象 */ function deepClone(obj){ if(typeof obj !='object' || obj ==null){ return obj; } // 初始化返回结果 let newObj if(obj instanceOf Array){ newObj = []; }else{ newObj ={}; } for(let i in obj){ // 保证key不是原型上的属性 if(obj.hasOwnProperty(key)){ // 递归 newObj[key] = deepClone(obj[key]) } } // 返回结果 return newObj; }
4.变量计算
类型转换:
a.字符串拼接
let a = 100+10;//120
let a = 100+'10';//'10010'
let a = true +'10';//'true10'
b.==
100 == '100' //true
0 == '' //true
0 == false //true
false == '' // true
null == undefined //true
用 === 的话,都是false
c.if语句和逻辑运算
truly变量: !!a === true 的变量
falsely 变量: !!a === false 的变量
<!-- 以下是falsely 变量。除此之外都是turly变量-->
!!0 === false
!!NaN === false
!!'' === false
!!null === false
!!undefined == false
!!false === false
if(){} //if括号里面的判断就是 turely 和falsely