您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

javascript:在切换情况下使用条件

javascript:在切换情况下使用条件

这有效:

switch (true) {
    case liCount == 0:
        setLayoutState('start');
        var api = $('#UploadList').data('jsp');
        api.reinitialise();
        break;
    case liCount<=5 && liCount>0:
        setLayoutState('upload1Row');
        var api = $('#UploadList').data('jsp');
        api.reinitialise();
        break;
    case liCount<=10 && liCount>5:
        setLayoutState('upload2Rows');
        var api = $('#UploadList').data('jsp');
        api.reinitialise();
        break;
    case liCount>10:
        var api = $('#UploadList').data('jsp');
        api.reinitialise();
        break;                  
}

此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是switch(true){...}您的case表达式必须为布尔值。

之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同样对布尔值求值的case表达式将确定运行哪个case。也可以解决这个问题,传递switch(false){..}所需的表达式并将其评估为false而不是true ..但个人更喜欢处理评估为真实的条件。但是,它也确实起作用,因此值得牢记以了解它在做什么。

例如:如果liCount为3,则第一个比较为true === (liCount == 0),表示第一种情况为假。然后,开关继续进行下一种情况true === (liCount<=5 && liCount>0)。该表达式的计算结果为true,表示此情况已运行,并在处终止break。我在此处添加了括号以使其更清楚,但它们是可选的,具体取决于表达式的复杂性。

这很简单,并且以一种整洁的方式(如果它适合您要执行的操作)来处理一系列条件,其中一系列ìf() ... else if() ... else if () ...可能会引入大量视觉噪声或脆弱性。

请谨慎使用,因为尽管它是有效的代码,但它是非标准模式。

javascript 2022/1/1 18:15:14 有432人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶