Javascript 字符串等于字符串控制流

Javascript 字符串等于字符串控制流,javascript,if-statement,control-flow,Javascript,If Statement,Control Flow,对于TDEE计算控制流比较运算符使用=时,流在if activityLevel=‘久坐’时停止。当我使用==时,它按预期工作。我已经被困在这个问题上两个小时了,我读了大约3个文档,但我想不出来 我知道==用于相同的值和含义,==用于相同的值和类型,但我认为这与此无关。有一段时间我想,如果activityLevel等于一个字符串,那么可能会使用=作为类型,但我很确定这也不是,因为我在= 注意:TDEE控制流中的注释图是结果应该是什么,而不是它们是什么 // REE Calculation // M

对于TDEE计算控制流比较运算符使用=时,流在if activityLevel=‘久坐’时停止。当我使用==时,它按预期工作。我已经被困在这个问题上两个小时了,我读了大约3个文档,但我想不出来

我知道==用于相同的值和含义,==用于相同的值和类型,但我认为这与此无关。有一段时间我想,如果activityLevel等于一个字符串,那么可能会使用=作为类型,但我很确定这也不是,因为我在=

注意:TDEE控制流中的注释图是结果应该是什么,而不是它们是什么

// REE Calculation
// Males - 10 x weight (kg) + 6.25 x height (cm) – 5 x age (y) + 5 = REE
// Females - 10 x weight (kg) + 6.25 x height (cm) – 5 x age (y) – 161 = REE

const gender = 'male'; // prompt('Are you male or female?');
const weight = 100; // prompt('How much do you weigh in KG?');
const height = 185; // prompt('What is your height in cm?');
const age = 23; // prompt('What is your age');

if (sex = 'male') {
    stepOne = 10 * weight;
    stepTwo = 6.25 * height;
    stepThree = 5 * age + 5;
    var ree = stepOne + stepTwo - stepThree;
}

if (sex = 'f') {
    stepOne = 10 * weight;
    stepTwo = 6.25 * height;
    stepThree = 5 * age - 161;
    var ree = stepOne + stepTwo - stepThree;
}

console.log(ree.toFixed(0)) // Answer is correct - 2171

// TDEE Calculation 

var activityLevel = 'moderate activity' // prompt('What is your activity level?\nsedentary/light activity/moderate activity/very active');

if (activityLevel = 'sedentary') {
    var tdee = ree * 1.2; // 2642.40
} else if (activityLevel = 'light activity') {
        var tdee = ree * 1.375; // 3027.75
    } else if (activityLevel = 'moderate activity') {
            var tdee = ree * 1.55; // 3413.10
        } else { // 3798.45
                var tdee = ree * 1.725;
            }   

console.log(tdee.toFixed(0))

如果你想得到某种东西的类型,你可以使用操作符。在if语句中使用赋值运算符=时,它将始终*传递条件。如果要检查相等性,应使用==或===运算符

例如,如果要检查活动级别,可以通过以下方式进行检查:

var activityLevel = 'moderate activity';
if (activityLevel === 'moderate activity'){
    console.log("Moderate Activity");
}
是一个关于JS中不同操作符的好文档


更新:还注意到变量sex没有定义。您在开始时定义了性别,但您正在对照变量性别进行检查

sex='f'不计算sex,它为sex赋值'f'。将其更改为sex=='f'在大多数情况下,它将始终通过该条件,但并不总是如此。它将根据指定的值通过/不通过条件。例如,使用if i=0将使条件失败,因为0是错误的。@JonathanLonowski是正确的!这就是为什么我总是在上面加上星号:@NimaEsmailiMokaram刚刚注意到性没有定义。我在使用ESLint时遇到了一大堆红线,这是关于使用let而不是var的。我做了很多修补,然后就去吃饭了,忘了把它换回来。谢谢你指出这一点!另外,当我想在左边的变量上运行它时,我应该使用=的理解正确吗?@Ibrahim=是赋值运算符,它将右边的结果放到左边的变量上。