【九月打卡】第9天 前端工程師2022版 就業必備基礎技術面試分析
课程名称:JS基础与变量类型计算
课程章节:Javascript面试课
课程讲师: 双越
课程内容:
一、变量类型和计算
1.值类型和引用类型的区别(有可能是场景题)
题目:
const obj1 = { x:100, y:200 }
const obj2 = obj1
let x1 = obj1.x
obj2.x = 101
x1 = 102
console.log(obj1) //{x:101,y:200}①值类型(值类型,互不干扰)
let a = 100 let b = a a = 200 console.log(b) //100
②引用类型(把a赋值给b,b改变,a也会跟着改变)
let a = { age:20 }
let b = a
b.age = 21
console.log(a.age) //21③常见的值类型
let a //undefined //undefined
const s = 'abc' //字符串
const n = 100 //数字
const b = true //布尔值
const s = Symbol('s') //es6 symbol④常见的引用类型
const obj = { x:100 } //对象
const arr = ['a','b','c'] //数组
const n = null // 特殊引用类型,指针指向为空地址
function fn() {} //特殊引用类型,但不用于存储数据,所以没有“拷贝、复制函数”这一说2.typeof 能判断哪些类型?
①识别所有值类型
let a; typeof a //'undefined'
const str = 'abc'; typeof str //'string'
const n = 1000; typeof n //'number'
const b = true; typeof b //'boolean'
const s = Symbol('s'); typeof s //'Symbol'②识别函数
typeof console.log //'function'
typeof function () {} //'function'③判断是否是引用类型
typeof null //'object'
typeof ['a','b'] //'object'
typeof {x:100} //'object'3.手写深拷贝
注意判断值类型和引用类型
注意判断数组还是对象
递归
/**
* 深拷贝
*/
const obj1 = {
age: 20,
name: 'lee',
address: {
city: 'suzhou'
},
arr: ['a', 'b', 'c']
}
// 重新赋值obj2
const obj2 = deepClone(obj1);
obj2.address.city = 'nanjing';
obj2.arr[0] = 'a1';
console.log(obj1.address.city); //suzhou
console.log(obj1.arr[0]); //a
/**
* 深拷贝
* @param {object} obj 要拷贝的对象
*/
function deepClone(obj = {}) {
// obj 是 null ,或者不是对象和数组,直接返回
if (typeof obj !== 'object' || obj == null) {
return obj
}
// 初始化返回结果
let result
if (obj instanceof Array) {
result = [];
} else {
result = {};
}
for (let key in obj) {
// 保证 key 不是原型属性
if (obj.hasOwnProperty(key)) {
// 递归调用!!!
result[key] = deepClone(obj[key])
}
}
// 返回结果
return result;
}4.何时使用 === 何时使用 ==
const obj = { x: 100 }
if (obj.a == null) {}
//相当于 if(obj.a === null || obj.a === undefined){}5.if语句和逻辑运算
!!0 === false !!NaN === false !!'' === false !!null === false !!undefined === false !!false === false
背诵全文
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦


