关于coding中赋值运算和逻辑运算优先级的问题

var isMonittor=(param.viewSetting?param.PageAccessMode:param.PageViewMode)||"Normal"=="Monitor"

上面这段代码在以下几种情况isMonittor的值
场景一

param.PageAccessMode = "acess";
param.PageViewMode = "view";
param.viewSetting = null;

场景二

param.PageAccessMode = "acess";
param.PageViewMode = "view";
param.viewSetting = "test";

场景三

param.PageAccessMode = null;
param.PageViewMode = "view";
param.viewSetting = null;

场景四

param.PageAccessMode = null;
param.PageViewMode = null;
param.viewSetting = null;

场景四中什么情况下(不加任何代码)可以先赋值"normal"再去做monitor

已解决 悬赏分:70 - 解决时间 2021-11-27 16:29
反对 0举报 0 收藏 0

回答1

最佳
  • @

    image.png

    ||、&& 可以理解短路运算符。
    如果根据第一个元素就已知结果,那么就不会继续运算。


    var isMonittor=(param.viewSetting?param.PageAccessMode:param.PageViewMode)||"Normal"=="Monitor"

    拆解一下

    var isMonittor;
    if(param.viewSetting){
        //param.PageAccessMode
        if(param.PageAccessMode){
            isMonittor=param.PageAccessMode
        }else{
            isMonittor="Normal"=="Monitor"
        }
    }else{
        //param.PageViewMode
        if(param.PageViewMode){
            isMonittor=param.PageViewMode
        }else{
            isMonittor="Normal"=="Monitor"
        }
    }
    支持 0 反对 0 举报
    2021-11-27 08:43