关于JavaScript中的switch case

关于JavaScript中的switch case,javascript,Javascript,console.log说 穆斯敦 181鼠标移动 鼠标 像上面的代码一样,传入的操作实际上在前两种情况下运行良好,但是即使控制台显示“mouseup”,它仍然无法通过第三种情况?我的代码有什么问题?是因为当mouseisdown为false时,您正在返回。你的代码说,在第一种情况下,鼠标按下了,这就是为什么它会被击中。在第二种情况下,鼠标必须向下才能执行passif语句。因此,您在按住左键的同时移动鼠标 现在第三种情况mouseup不能满足mouseisdown要求。(我很确定,当操作是mous

console.log说

穆斯敦 181鼠标移动 鼠标


像上面的代码一样,传入的操作实际上在前两种情况下运行良好,但是即使控制台显示“mouseup”,它仍然无法通过第三种情况?我的代码有什么问题?

是因为当
mouseisdown
为false时,您正在返回。你的代码说,在第一种情况下,鼠标按下了,这就是为什么它会被击中。在第二种情况下,鼠标必须向下才能执行pass
if
语句。因此,您在按住左键的同时移动鼠标

现在第三种情况
mouseup
不能满足
mouseisdown
要求。(我很确定,当操作是
mouseup
时,标志是
false
),因为它是相反的,所以在执行其他所有操作之前返回函数,这使得switch语句无法访问


要测试这一点,只需去掉第一个
if语句
,并检查是否可以点击
mouseup
。如果这样做,则会出现与逻辑相关的错误。

查看
mouseup
case块中代码的颜色。看起来有点滑稽全是红色的?但是为什么上面的一行有黑色文本……因为
mouseisdown
为false?@JaredFarrish这很可能不在实际代码中。它只是为了这个问题而添加的。@Xufox-当然,它根本不会运行。@HBP你是对的,还有比这个问题更多的问题。谢谢
function tool_line(action, x, y) {
    console.log(action);
    if (!mouseisdown) {
        return;
    }
    switch (action) {
        case "mousedown":
            startx = x;
            starty = y;
            break;
        case "mousemove":
            if (mouseisdown) {
                $(current_marker).remove();
                current_marker = svg_line(x1, y1, x2, y2);
            }
            break;
        case "mouseup":
            console.log('why don't go there?');  // Question!
            svg_line(x1, x2, y1, y2);
            break;
    }
}