// 1.0数据类型有几种 // 值类型(基本数据类型):String Number Boolean undefined Symbol // 引用数据类型:Object Function Array null
// 2.0typeof输出什么
可以设别所有的值类型
console.log(typeof(1)) //number console.log(typeof(NaN)) //number console.log(typeof('12')) //string console.log(typeof(true)) //boolean console.log(typeof(undefined)) //undefined 可以识别函数 console.log(typeof(function(){}))//function 可以识别引用类型(不可再细分) console.log(typeof([]))//object console.log(typeof({}))//object console.log(typeof(null))//object // 3.0如何判断数据类型 // typeof操作符(见2.0) // toString()方法 支持:number/boolean/string/object 不支持:null undefined let a = true console.log(a.toString()) //"true" let b = 45 console.log(b.toString())//"45" // toLocaleString() let arr=['1','2'] console.log(arr.toLocaleString())//'1,2' // 检测数组类型的方法 // ① instanceof 操作符 let arr1=['1','2'] console.log(arr1 instanceof Array)//true let arr2=123 console.log(arr2 instanceof Array)//false // 对象的 constructor 属性 let arr3=['1','2'] console.log(arr1.constructor === Array)//true let arr4=123 console.log(arr2.constructor === Array)//false // ③ Array.isArray( ) 检验值是否为数组 let arr5=['1','2'] console.log(Array.isArray(arr5))//true let arr6=123 console.log(Array.isArray(arr6))//false // 4.0 == 和 === 有什么区别,什么场景下使用? // == 表示相同 // 类型不同,值也可以相同
// === 表示严格相同。 // 类型不同就直接false
// == 会触发类型转换,所以一般情况用=== 100=='100' 0=='' 0==false false=='' null==undefined //除了 == null之外,其他都一律用=== const obj={a:100} if(obj.b == null) { //这个相当于判断 obj.b === undefined || obj.b === null }
// 5.0 null 和 undefined 有什么区别? // null是不存在的对象 null是表示一个空对象指针, // undefined 在使用var 声明变量但未对其加初始化时,这个变量就是undefined
// 6.0 深拷贝
function deppClone(obj={}){ // 判断如果是值类型就直接返回 if(typeof obj !== 'object' || obj == null){ return obj } // 判断是对象还是数组 let result if(obj instanceof Array){ result = [] }else{ result ={} } for(let key in obj){ if(obj.hasOwnProperty(key)){ // 递归 result[key]=deppClone(obj[key]) } } return result }
// 7.0 变量计算(类型转换)
console.log(100+100) //200 console.log(100+'100') //1100 console.log(true+'100') //true100 console.log(true+true) //2
// == 会触发类型转换,所以一般情况用=== 100=='100' 0=='' 0==false false=='' null==undefined //除了 == null之外,其他都一律用=== const obj={a:100} if(obj.b == null) { //这个相当于判断 obj.b === undefined || obj.b === null }
//if语句和逻辑运算中 也会类型转换 可分为truly变量 falsely变量 // falsely变量有: !!0 !!false !!'' !!NaN !!undefined !!null