【发布时间】:2013-02-23 13:10:33
【问题描述】:
这段代码会在 Chrome 的 JavaScript 控制台中生成该错误,我不知道为什么。在谷歌搜索有类似问题的人之后,我没有找到任何 D:
错误消息表明问题出在event.which(),但我看不出我使用它的方式与预期有何不同,其他类似的人似乎没有遇到问题。
$(document).keypress(function(event) {
switch (event.which()) {
case 38 : keyNorthPressed = true;
break;
case 39 : keyEastPressed = true;
break;
case 40 : keySouthPressed = true;
break;
case 41 : keyWestPressed = true;
break;
}
});
提前致谢。
【问题讨论】:
-
错误告诉您
event.which不是函数,查看the documentation 可以确认这一点。示例展示了如何使用它。 -
好吧,我的印象是
switch语句不一定需要函数,但值会起作用,不是这样吗? -
当然,您可以将任何值传递给
switch。该问题与switch无关。您正在尝试调用event.which,但它不是函数。只需执行switch(event.which) {。其他示例:var foo = {bar: 5};。foo.bar()会抛出同样的错误,因为foo.bar是一个数字,而不是一个函数。 -
对,行得通。谢谢你。我很感兴趣为什么它会尝试调用
event.which,而不是代码中的event.which()? -
我不明白。将
()放在符号之后总是被解释为函数调用。如果符号未引用函数,则会出现错误,因为只能调用函数。它正在尝试调用event.which,因为您通过在event.which之后添加()来告诉它这样做。
标签: javascript jquery switch-statement