关于JavaScript中的switch case

时间:2017-06-11 04:02:13

标签: javascript

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;
    }
}

console.log说

  

鼠标按下    181 mousemove    鼠标松开

与上面的代码一样,传入的操作实际上在前两种情况下表现良好,但即使控制台说" mouseup",它仍然没有通过第三种情况?我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

是因为您在mouseisdown为假时返回。你的代码说在第一种情况下鼠标停机,这就是它被击中的原因。在第二种情况下,鼠标必须向下甚至执行传递if语句。所以你在按住左键的同时移动鼠标。

现在,第三个案例mouseup无法满足mouseisdown要求。 (当操作是false时,我非常确定该标志是mouseup,因为它是相反的,因此在执行其他所有操作之前返回函数,这使得switch语句无法访问。

要测试这个,只需删除第一个if statement,然后检查是否可以点击mouseup。如果你这样做,你就会遇到与逻辑相关的错误。