gpt4 book ai didi

Javascript : Seems like typeof doesn't work

转载 作者:行者123 更新时间:2023-11-29 18:19:52 25 4
gpt4 key购买 nike

我只想在未设置 javascript 对象时设置值。我的(测试)函数如下所示:

var test = function(){
this.value = {};

this.setValue = function(seperator, newValue){
console.log((this.value[seperator] === "undefined")); //Why both times false?
if(typeof(this.value[seperator] === "undefined")){
this.value[seperator] = newValue;
}else{
//noop
}
console.log(this.value[seperator]);
}
}
var blubb = new test();

blubb .setValue("foo","bar");
blubb .setValue("foo","notme");

在js控制台中返回

false
bar
false
notme

有人能告诉我为什么两次“未定义”测试都告诉我未定义吗?

提前致谢

最佳答案

因为 undefined在 JS 中不是字符串,它是 global 对象的属性,您可以使用 === 按类型进行比较。

=== 不仅会比较值,还会比较它们的类型:

1 === "1" // false
1 == "1" // true

试试这个:

console.log(( typeof this.value[seperator] === "undefined"));

typeof运算符将变量类型转换为字符串,然后您才能检查您的变量是否等于字符串 undefined

在你的第二段代码中:

if(typeof(this.value[seperator] === "undefined")){

您在变量外部使用 typeof 运算符,因此您的代码首先检查 this.value[seperator] === "undefined" 是否返回 false 给你,然后你通过“typeof false”检查,它会为你返回 boolean

在最后一步,您的代码将转换为:

if( "boolean" ){

这始终是 true,因为字符串不为空。

关于Javascript : Seems like typeof doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com