为 javascript 创建 Repl.it 函数布尔值时出现问题

Problem creating Repl.it function boolean for javascript

一直在努力寻找答案来学习我对 javascript 的业余理解。在 Repl.it 内部工作,我的 class 和作为一个初学者,所以我觉得有很多东西被剥离到极端的基础知识,这对我寻找解决方案没有帮助。

最初的问题是这样做:

// orderPizza takes in a boolean
// if it is true return the string 'cheese pizza'
// if not, return the string 'pepperoni pizza'
// Example: orderPizza(true) returns 'cheese pizza'

function orderPizza(vegetarian) {

}

我尝试了很多很多不同的组合,试图找出我做错了什么,在这一点上,我只是不认识什么了。这是我的最新猜测之一:

function (vegetarian) {
let orderPizza = vegetarian;
    if (orderPizza = vegetarian) {
        return ("Cheese Pizza!");
    } else {
        return ("Pepperoni Pizza!");
}
};
let newOrder = vegetarian
console.log(newOrder)

出现错误。社区有任何解决方案吗?

欢迎来到Javascript。 但我认为你需要从 w3school js tutorial 开始重新学习 js。简单易学。

最初的问题是这样做:

// orderPizza takes in a boolean
// if it is true return the string 'cheese pizza'
// if not, return the string 'pepperoni pizza'
// Example: orderPizza(true) returns 'cheese pizza'

function orderPizza(vegetarian) {
     // check vegetarian is true
     if(vegetarian){
         return 'cheese pizza';
     }else{
         return 'pepperoni pizza';
     }
}

// when you call orderPizza(true). In your function parameter is true
console.log(orderPizza(true));

// when you call orderPizza(true). In your function parameter is false
console.log(orderPizza(false));

您最近的猜测是错误的:

// your function not have name (function name is name you call function)
// example : function orderPizza(vegetarian). orderPizza is function name. vegetarian is parameter you send to in function 
function (vegetarian) {
    // this is you set orderPizza is vegetarian
    let orderPizza = vegetarian;
    // Comparison operators is '==' or '===' not '='. '=' is Assignment Operators
    if (orderPizza = vegetarian) {
        return ("Cheese Pizza!");
    } else {
        return ("Pepperoni Pizza!");
    }
};
// this is you set orderPizza is vegetarian not call function
// you can call function with name and parameter
// example: let newOrder = orderPizza(true)
let newOrder = vegetarian
console.log(newOrder)

您的代码的错误仅仅是因为您使用了等号 = 而不是逻辑运算符 ==(等于)

https://www.w3schools.com/js/js_comparisons.asp

如果您按如下方式重写代码,它将 运行:

function (vegetarian) {
    // this is you set orderPizza is vegetarian
    let orderPizza = vegetarian;
    // Comparison operators is '==' or '===' not '='. '=' is Assignment Operators
    if (orderPizza == vegetarian) {
        return ("Cheese Pizza!");
    } else {
        return ("Pepperoni Pizza!");
    }
};
// this is you set orderPizza is vegetarian not call function
// you can call function with name and parameter
// example: let newOrder = orderPizza(true)
let newOrder = vegetarian
console.log(newOrder)

关于问题及其好的答案:

function orderPizza (vegetarian){
    if (vegetarian == true){
        return 'cheese pizza'
    }
    return 'pepperoni pizza'
}

order1 = orderPizza(true)
order2 = orderPizza(false)

console.log(order1)
// will log 'cheese pizza'
console.log(order2)
// will log 'pepperoni pizza'

注意:您实际上不需要使用 else 因为代码只会到达

return 'pepperoni pizza' 

如果 if 表达式没有找到等于 true 的变量。一个函数只能 return 一次。您可以将 return 视为函数的 'answer'。

你可以写

if (vegetarian == true) {

if (vegetarian) {

因为 if 表达式将计算括号中的内容。如果素食是 'truthy' (https://www.w3schools.com/js/js_booleans.asp) 那么你不需要将它与 'true' 进行比较。

然而,在严格相等的意义上,比较将确认它的值是真实的,而不是像字符串这样的另一个真值。