变量的类型和计算

变量类型和计算


一、值类型和引用类型
基本数据类型是直接赋值的,数据类型有:‘字符串’,‘数值’,‘布尔’,‘symbol’,‘undefined’
引用数据类型赋值的是堆中的内存地址,数据类型有:‘对象’,‘字符串’,‘null’,‘函数’
‘null’是一个特殊类型,指针指向空地址

	const obj1={x:100,y:200}
    const obj2=obj1
    let x1=obj1.x
    obj2.x=101
    x1=102
    console.log(obj1) //{x:101}
    // 这里的let x1=obj.x; 是一个干扰,定义了一个数值类型,不是引用类型

二、typeof运算符
typeof能判断所有值类型,null判断出的是object

//注意判断值类型判断和引用类型
//注意判断是数组还是对象
//递归

//手写深拷贝
<script>
    arr=[100, [{a : 'hello'}, {b : "world"}], { c: "123456789" }];

    //判断修改的是不是'object'或者null,如果不是 object 或者 null 那么直接返回
    function deepClone(obj = {}) {
        if (typeof obj !== 'object' || obj == null) {
            return obj;
        }
        let result;
        //判断上面下来的obj是不是数组 用instanceof来检测 因为是数组引用类型 
        obj instanceof Array?result=[]:result={}

        for (var item in obj) {
            //查找一个对象是否有某个属性
            if (obj.hasOwnProperty(item)) {
                // 递归调用
                result[item] = deepClone(obj[item])
            }
        }
        return result;
    }
    let arr1=deepClone(arr);
    arr1[1][0].a='vue'
    arr1[0]=99
    console.log('原数组',arr)
    console.log('新数组',arr1)

</script>

三、变量计算-类型转换

1.字符串拼接

	let a=100+10; //110
    let b=100+'10'; //'10010'
    let c=true+'10' //'true10'

2.==运算符

`==`隐式的做一些类型转换,尝试相等
// 除了==null或undefined,其他一律都用===
	100=='100' //true
    0=='' //true
    0==false //true
    false=='' //true
    null==undefined //true

3.if语句和逻辑语句

如果是两步非true运算就是 truly变量
如果是两步非false运算就是 falsely变量

    // 除了这些是falsely变量,其他都是truely变量
    !!0===false
    !!NaN===false
    !!""===false
    !!null===false
    !!undefined===false
    !!false===false
    
	//truly变量
	conse a=true;
	if(a){
		//...
	}
	//falsely变量
	const c=''
	if(c){
		//...
	}

	//truly会直接返回
	console.log(10&&0) //0
	console.log(''||'abc') //'abc'
	console.log(!window.abc) //true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值