面试经-JS基础-变量类型和计算

1、值类型和引用类型

1.1、值类型

	let a = 13;
	let b = a;
	b = 14;
	console.log(a);
	//13

当我们定义一个变量的时候是直接放在了栈里面,每一个key对应一个value

常见的值类型数据
let a; //undefined
let b = “hello”;//String
let c = 666;//number
let d = true;//boolen
let f = Symble(‘kk’);

1.2、引用类型

	let a = {age:18};
	let b = a;
	b.age = 19;
	console.log(a.age);
	//19

这里我们发现,理论上是不会改变a的,但是这里吧a也给变了,原因是,在存储的时候,会把引用类型的数据放在堆里面,他的key值是一个内存地址,然后在栈里面存一个key是这个变量名,value是这个内存地址。
所以当我们吧a给b的时候,实际上是吧a的内存地址给了b,所以我们修改b的时候,a也会变

常见的引用类型
let a = {x:100};
let b = [];
let c = null; //特殊的引用类型,指针指向空地址
let d = function fn(){}; //特殊的引用类型,不存数据,所以没有深拷贝,复制函数这说法

2、typeof 运算符

typeof可以判断所有的值类型
也可以判断函数类型
能识别引用类型,只能识别为object,不能判断是数组还是对象
typeof null //object

3、深拷贝

let Obj = {
    name:'potkiss',
    age:90,
    frineds:['aa','bb','cc'],
    school:{
        name:'dd'
    },
    day:null
}
//如果这里不用深拷贝的话,后面的就会影响
let b = deepClone(Obj);
b.school.name = 'll';
console.log(Obj)
/**
 * 深拷贝
 */
function deepClone(obj){
    if(typeof obj != 'object' || obj == null){
        return obj
    }
    //初始化返回结果
    let result 
    if(obj instanceof Array){
        result = []
    }else{
        result = {}
    }
    for (const key in obj) {
        //保证key不是原型的属性
        if (obj.hasOwnProperty(key)) {
            result[key] = deepClone(obj[key])
        }
    }
    return result
}

4、变量计算-类型转换

4.1、什么时候用==,什么时候用===

除过判断一个值是否是null的时候用==,其他情况都用===。
因为这个情况的==,相当于xx === null || xx === undefined

4.2、if语句和条件判断

falsely变量:两次取反还是false的是falsely变量
常见的falsey变量----0、NAN、‘’、null、undefined、false
truely变量:两次取反后是true的是truely变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值