引用类型指向内存地址 深拷贝: /*深拷贝 */const obj1={age:20
一、typeof 能判断那些类型
1.识别所有值类型
2.识别函数
3.判断是否是引用类型
二、何时使用===何时使用==
==会产生隐式转换,除了==null之外,其他一律用===
三、值类型和引用类型的区别
仓库模型的差别,引用类型指向内存地点
深拷贝:
/* 深拷贝 */ const obj1={ age:20, name:‘xxx‘, address:{ city:"beijing" }, arr:[‘a‘,‘b‘,‘c‘] } const obj2=deepClone(obj1); obj2.address.city=‘shanghai‘ /** * @param {object} obj 要拷贝的东西 * 法式: * 1.判断值类型和引用类型 * 2.注意判断数组还是东西 * 3.递归(核心) */ function deepClone(obj={}){ if(typeof obj !==‘object‘ || obj==null){ // obj是null,或者不是东西或者数组,直接返回 return obj } // 界说返回功效: let result // 判断是数组还是东西: if(obj instanceof Array){ result=[] }else{ result={} } // 无论东西和数组都可以用for in 遍历 for (let k in obj){ // 保证key不是原型上的属性: if(obj.hasOwnProperty(k)){ // 递归: result[k]=deepClone(obj[k]) } } // 返回功效: return result } // 流程: // let result ={},先传入key,key是age,然后执行deepClone,当20通报过去以后因为不是obj,所以直接返回自己20, // 同理 name,当进行到address的时候因为后面是一个东西,所以会再进入递归
字符串和运算符
// 字符串拼接 const a=100+10;//110 const b=100 + ‘10‘ // ‘10010‘ const c=true +‘100‘ //‘true10‘ // ==运算符 100==‘100‘ //true 0==‘‘ //true 0==false //true false ==‘‘ //true null==undefined //true /*规律:除了==null之外,其他一律用 ===,例如:*/ const obj={x:100} if(obj.a==null){ } //相当于 if(obj.a===null || obj.a===undefined){} //if语句和逻辑运算 //truely变量(真的变量): !!a===true的变量 //falsely变量(假的变量): !!a===false的变量 //const n =100; => !n => false => !n =true ---颠末两步非运算呈现一个布尔值 //以下是falsely变量.除此之外都是truly变量 !!0 === false !!NaN===false !!‘‘===false !!null===false !!undefined===false !!false===false // if语句中判断的就是trule变量和falsely变量 // truly变量: const a=true if(a){ //... } const b=100 if(b){ //.... } //falsely变量 const c=‘‘ if(c){ // ... } const d=null; if(d) { // ... } let e if(e){ //... } // 逻辑判断 console.log(10 && 0) //0 因为10是truely变量,返回第二个值 console.log(0 && 10) //因为0是falsely变量,,在与判断中第一个为false直接返回 0 console.log(‘‘ || ‘abc‘) //‘abc‘ console.log(!window.abc) //true
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31971.html