Javascript 布尔不是一个函数
我只是想弄明白为什么这个代码不起作用Javascript 布尔不是一个函数,javascript,function,boolean,flow,Javascript,Function,Boolean,Flow,我只是想弄明白为什么这个代码不起作用 var programming = false; var happy = function() { if(programming === true) { happy = false; } else { happy = true } }; 或者我的第二代码 var programming = false; var happy = function() { if(programming === true) {
var programming = false;
var happy = function() {
if(programming === true) {
happy = false;
}
else {
happy = true
}
};
或者我的第二代码
var programming = false;
var happy = function() {
if(programming === true) {
happy = false;
}
if(programming) {
happy = true;
}
};
根据您的代码和错误消息
var happy = function() {
if(programming === true) {
happy = false;
}
else {
happy = true
}
};
您有一个名为happy
的函数,但随后您用布尔值覆盖它,似乎您稍后要调用它,这会产生错误“布尔值不是函数”。将函数中的变量happy
更改为其他名称
JavaScript中一件有趣的事情是,如果更改声明函数的方式,代码将不会抛出错误:
var programming = false;
function happy() {
if(programming === true) {
happy = false; //you should use the keyword var here actually
} else {
happy = true;
}
}
happy();
这不会将函数更改为布尔值:我想您的意思是
var programming = false;
var happy = function() {
if(programming === true) {
return false;
}
else {
return true;
}
};
这就是javascript的工作原理。您可以使用关键字return
设置函数的返回值,而不是将函数重新指定给它的返回值
代码发生的情况是,第一次调用函数时,它会用返回值(即布尔值)替换自身。第二次尝试调用时,函数不再存在,因为变量
happy
现在包含一个布尔值(第一次调用的结果)。您希望它做什么?到底发生了什么?“不起作用”的确切含义是什么?如果不希望它是布尔值,为什么要将布尔值指定给happy?您引用的代码正在定义名为happy
的函数。然后你调用它,它将自己重新定义为布尔值。@Barmar-我使用了“似乎”一词,因为问题中的代码没有显示函数被调用。“似乎”应用于“你有”,而不是“你调用”。很明显,他是在打电话,因为这是得到错误的唯一方法。谢谢你回答了我的问题,它回来了。