js基础复习1
Posted 日暮途远i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基础复习1相关的知识,希望对你有一定的参考价值。
一、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
以上是关于js基础复习1的主要内容,如果未能解决你的问题,请参考以下文章