断言属性存在会产生意想不到的结果[关闭]

问题描述 投票:0回答:2

这是我的代码

let user = {
    fName: 'john',
    lName: 'doe',
    uName: 'jDoe23',
    age: 18,
};

function helloUser(user) {
    if(user.fName === true && user.lName === true && user.age >= 18) {
        console.log(`Hello ${user.uName}. Welcome to the world of wonders.`);
    } else {
        console.log("Please get a parent's permission before playing this game.")
    }
};

helloUser(user);

我对编码和 JavaScript 很陌生,但我对对象和函数之间的关系有点困惑。当我运行代码时,它会记录“玩此游戏之前请获得家长的许可。

我尝试使 if/else 语句的第一部分等于 true,但它的评估结果相同。有人可以解释一下并帮助我吗?

javascript node.js
2个回答
1
投票

当您使用

user.fName === true && user.lName === true && user.age >= 18

这意味着:

user.fName
等于
true
并且
user.lName 
等于
true

由于

user.fName
=“Kado”等,此条件不成功,因此它进入
else


0
投票

问题出在if语句条件上:

if(user.fName === true && user.lName === true && user.age >= 18)

它表示如果 user.fName 等于布尔值

true
并且 user.lname 等于布尔值
true
并且 user.age 至少为 18。如果所有这些条件都为真
console.log(`Hello ${user.uName}. Welcome to the world of wonders.`);
将起作用,否则 else 语句.

如果您想检查用户是否有

fname
lname
age >=18
那么此条件有效:

function helloUser(user) {
    if(user.fName && user.lName && user.age >= 18) {
        console.log(`Hello ${user.uName}. Welcome to the world of wonders.`);
    } else {
        console.log("Please get a parent's permission before playing this game.")
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.