Javascript编号0显示为未定义
我正在做一个JS挑战,在工作时遇到了数字0,显示为未定义 零仅在方程中的第二位显示未定义,并且在加法、减法、除法或乘法中显示未定义 例: 这有更深层次的原因吗?我很困惑为什么它显示未定义的1路,而不是另一路。我也试过交换Javascript编号0显示为未定义,javascript,Javascript,我正在做一个JS挑战,在工作时遇到了数字0,显示为未定义 零仅在方程中的第二位显示未定义,并且在加法、减法、除法或乘法中显示未定义 例: 这有更深层次的原因吗?我很困惑为什么它显示未定义的1路,而不是另一路。我也试过交换 function zero(arg) { let num = 0; if(!arg) {return num;} if(arg.symbol == "+") {return num + arg.param} if(arg.symbol == "-") {retu
function zero(arg) {
let num = 0;
if(!arg) {return num;}
if(arg.symbol == "+") {return num + arg.param}
if(arg.symbol == "-") {return num - arg.param}
if(arg.symbol == "*") {return num * arg.param}
if(arg.symbol == "/") {return Math.floor(num / arg.param)}
}
function one(arg) {
let num = 1;
if(!arg) {return num;}
if(arg.symbol == "+") {return num + arg.param}
if(arg.symbol == "-") {return num - arg.param}
if(arg.symbol == "*") {return num * arg.param}
if(arg.symbol == "/") {return Math.floor(num / arg.param)}
}
function two(arg) {
let num = 2;
if(!arg) {return num;}
if(arg.symbol == "+") {return num + arg.param}
if(arg.symbol == "-") {return num - arg.param}
if(arg.symbol == "*") {return num * arg.param}
if(arg.symbol == "/") {return Math.floor(num / arg.param)}
}
function three(arg) {
let num = 3;
if(!arg) {return num;}
if(arg.symbol == "+") {return num + arg.param}
if(arg.symbol == "-") {return num - arg.param}
if(arg.symbol == "*") {return num * arg.param}
if(arg.symbol == "/") {return Math.floor(num / arg.param)}
}
function plus(arg) {
if(!arg) {return "+";}
let method = {param: arg, symbol: "+"}
return method;
}
function minus(arg) {
if(!arg) {return "-";}
let method = {param: arg, symbol: "-"}
return method;
}
function times(arg) {
if(!arg) {return "*";}
let method = {param: arg, symbol: "*"}
return method;
}
function dividedBy(arg) {
if(!arg) {return "/";}
let method = {param: arg, symbol: "/"}
return method;
}
zero()
返回0
,plus(0)
返回“+”
,三个(“+”)
计算“+”。symbol
未定义,因为字符串没有名为symbol
zero()
的属性返回0
,返回,plus(0)
返回,three(“+”)
计算“+”。symbol
是未定义的
,因为字符串没有名为symbol
的属性。您可以使用返回值的函数或作为参数移交的函数来包装值
const
numberFunc=value=>f=>f?f(值):值,
零=numberFunc(0),
三=数字Func(3),
plus=a=>b=>a+b;
log(零(加上三个());
log(三个(加上(零()));
console.log(三个());
log(zero())代码>您可以使用返回值的函数或作为参数移交的函数来包装这些值
const
numberFunc=value=>f=>f?f(值):值,
零=numberFunc(0),
三=数字Func(3),
plus=a=>b=>a+b;
log(零(加上三个());
log(三个(加上(零()));
console.log(三个());
log(zero())显然,代码>
由于此部分的原因,它返回未定义
function plus(arg) {
if(!arg) {return "+";}
let method = {param: arg, symbol: "+"}
return method;
}
当在没有参数的情况下调用zero()
时,inplus(arg)
应返回“+”
因为!0=真
并且执行第一个条件
这就是为什么在没有参数的情况下调用zero()
,它显然是未定义的
由于此部分的原因,它返回未定义
function plus(arg) {
if(!arg) {return "+";}
let method = {param: arg, symbol: "+"}
return method;
}
当在没有参数的情况下调用zero()
时,inplus(arg)
应返回“+”
因为!0=真
并且执行第一个条件
这就是为什么在没有参数的情况下调用zero()
,它将是未定义的那么zero()
返回什么?那么,plus(zero())
返回什么?那么,three(加上(zero())
返回什么?要关注关键点,!0
评估为?那呢!3
?您需要检查typeof(arg)==“undefined”
感谢@jornsharpe的简单调试演练。我想我真的需要另一双眼睛来观察这个。那么zero()
返回什么呢?那么,plus(zero())
返回什么?那么,three(加上(zero())
返回什么?要关注关键点,!0
评估为?那呢!3
?您需要检查typeof(arg)==“undefined”
感谢@jornsharpe的简单调试演练。我想我真的需要另一双眼睛。