typescript 两个字符串dayjs()之间的差异

wztqucjr  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(201)

我不知道为什么下面的测试输出为false:

const test = "2022-12-10T06:51:00Z"

    if (dayjs(test) == dayjs("2022-12-10T06:51:00Z")){
        console.log('true')
    } else {
        console.log('false')
    }

虽然这个测试是正确的

const test = "2022-12-10T06:51:00Z"

    if (test == "2022-12-10T06:51:00Z"){
        console.log('true')
    } else {
        console.log('false')
    }

有人能解释一下为什么第一个测试是假的吗?
谢谢你

nwnhqdif

nwnhqdif1#

因为每次调用dayjs时,它都会返回一个新的对象,不管你传递的值是否相同。

const obj1 = dayjs("2022-12-10T06:51:00Z");  
const obj2 = dayjs("2022-12-10T06:51:00Z");
console.log(obj1 === obj2);

正如你所看到的,obj1obj2是两个不同的对象,在内存中有不同的引用,所以它们不相等。
但是当比较两个字符串时,如果值相同,则比较检查变为true

const test = "2022-12-10T06:51:00Z";
console.log(test == "2022-12-10T06:51:00Z");

您可以阅读更多关于对象引用和复制here的内容。

相关问题