我只想弄清楚为什么这段代码不起作用。
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;
}
};
答案 0 :(得分:1)
根据您的代码和错误消息
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();
这不会将函数更改为布尔值:http://jsfiddle.net/kLksY/
答案 1 :(得分:1)
我认为你的意思是
var programming = false;
var happy = function() {
if(programming === true) {
return false;
}
else {
return true;
}
};
这是javascript的工作原理。您可以使用关键字return
设置函数的返回值,而不是通过将函数重新分配给它的返回值。
你的代码会发生的事情是,第一次调用函数时,它会用它的返回值(即布尔值)替换它自己。第二次尝试调用它时,该函数不再存在,因为变量happy
现在包含一个布尔值(第一次调用它的结果)。