JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法

由于C-LODOP获取一些动作函数的返回值,需要用回调函数,由于常见的使用方法是混合部署,也就是同一个页面,根据浏览器的不同,可能会走LODOP ,也可能会走C-LODOP,因此写法要坚固两种,而有些人可能会不注意加大括号,而支线里又有多句,造成重复输出。
这个应该属于JS语句的执行的范畴,也就是if else里,如果支线有多个语句,需要用大括号括起来,否则会当作if else之外的语句执行。
测试代码如下:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS判断支线里,多个语句,不加大括号括起来,会不当做在支线里,</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<a href="javascript:getSystemInfo11()">lodop输出不带回调</a><br><!--lodop正常,c-lodop返回不正常-->
<a href="javascript:getSystemInfo22()">带回调,直接console返回值</a><br><!--都正常直接console返回值-->
<a href="javascript:getSystemInfo33()">支线判断不加大括号,两次赋值</a><br><!--支线判断不加大括号,两次赋值,结果先undefined后正确值-->
<a href="javascript:getSystemInfo44()">支线判断加大括号,两次赋值</a><br><!--都正常-->
<a href="javascript:getSystemInfo55()">支线判断不加大括号,两次赋值 alert</a><br><!--弹出两次,c-lodop里的和最后的都执行了-->

<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
function getSystemInfo11(){
       LODOP=getLodop();
       var cd=LODOP.GET_SYSTEM_INFO("Drive.Labels");
       console.log(cd);
};
function getSystemInfo22(){
       LODOP=getLodop(); 
       if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){console.log(Value);}; 
       strResult=LODOP.GET_SYSTEM_INFO("Drive.Labels");
       if (!LODOP.CVERSION) console.log(strResult);
   };
function getSystemInfo33(){//两个console都执行了
       LODOP=getLodop();
       var cd;
       if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){cd=Value;console.log(cd);}; 
       strResult=LODOP.GET_SYSTEM_INFO("Drive.Labels");
       if (!LODOP.CVERSION) 
       cd=strResult;console.log(cd);
   };
function getSystemInfo44(){//支线加大括号,支线不符合时不再执行
       LODOP=getLodop();
       var cd;
       if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){cd=Value;console.log(cd);}; 
       strResult=LODOP.GET_SYSTEM_INFO("Drive.Labels");
       if (!LODOP.CVERSION) 
       {cd=strResult;console.log(cd);}
   };
function getSystemInfo55(){//两个alert都执行了
       LODOP=getLodop();
       var cd;
       if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){cd=Value;alert(cd);}; 
       strResult=LODOP.GET_SYSTEM_INFO("Drive.Labels");
       if (!LODOP.CVERSION) 
        cd=strResult;alert(cd);//不加大括号,弹出两次,c-lodop本身的执行后,支线第二句不会当作支线里的。
   };
</script> 
</body>

如图,测试代码的结果:
c-lodop测试结果(高版本的火狐谷歌,或qq,360一些浏览器的极速模式)
(错误)不带回调,在使用c-lodop的时候:7BCAAAJ1091_1、7BCAAAJ1091_2。。。。。
(正确)带回调,直接console返回值:CDEF
(错误)支线判断不带大括号,两次赋值,esle里两个语句,没有括起来:输出两个log,undefined CDEF
(正确)支线加大括号,两次赋值在大括号里,else两个语句括起来:CDEF
(错误)支线判断不带大括号,两次赋值,esle里两个语句,没有括起来,把输出log改成alert:弹出两次,一次undefined,一次CDEF。

原文地址:https://www.cnblogs.com/huaxie/p/10120381.html