由于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。

JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法的更多相关文章

  1. 原生js判断css动画结束 css 动画结束的回调函数

    原文:原生js判断css动画结束 css 动画结束的回调函数 css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画是否结束:即使是采用CSS技术生成动画效果,Jav ...

  2. js判断input输入框为空时遇到的问题 弹窗后,光标没有定位到输入框,而是直接执行我的处理页面程序

    无论是会员注册还是提交订单,我们都要使用到form表单,此时我们在处理数据时,就要判断用户填写的信息.一次是直接通过js判断input输入框是否没有填信息,然后在后台处理文件中通过过滤字符串后再次判断 ...

  3. C 语言中的 switch 语句 case 后面是否需要加大括号

    事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...

  4. js判断语句关于true和false后面跟数字或字符串的问题

    我经常在代码中看到很长串判断,看到就头疼,简单的整理一下. 比如:(client.top>=0&&client.left>=0&&client.bottom ...

  5. js实现IOS上删除app时颤抖动画j函数

    欢迎提供更好的方法! <!--http://www.cnblogs.com/webzhangnan/p/3244920.html --> <html> <head> ...

  6. C# if判断语句执行顺序

    DataTable dt = null; )//不报错,因为先执行dt != null 成立时才执行dt.Rows.Count > 0 { } && dt != null)//报 ...

  7. 浅谈js回调函数

    回调函数原理: 我现在出发,到了通知你”这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程 例子 1.基本方法 ? 1 ...

  8. 采用指数退避算法实现ajax请求的重发,全部完成时触发回调函数

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  9. 详解回调函数——以JS为例解读异步、回调和EventLoop

      回调,是非常基本的概念,尤其在现今NodeJS诞生与蓬勃发展中变得更加被人们重视.很多朋友学NodeJS,学很久一直摸不着门道,觉得最后在用Express写Web程序,有这样的感觉只能说明没有学懂 ...

随机推荐

  1. nginx之七:nginx path(root)文件路径配置

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了如下,方便大家在应用过程中,快速响应.root和alias主要区别在于如何解释location后面的uri,这会使 ...

  2. 自定义的库加载不进来,因为库中import的PIL和pillow文件没有pip install

    1.自定义的库,加载进来,提示red不能识别这个class或moudle 2.应该展开细节多看下,细节中提示,没有PIL和pillow 3.这个时候在cmd中使用pip安装PIL和pillow pip ...

  3. HotSpot虚拟机对象探秘(对象创建,对象内存布局,对象访问定位)

    以常用的HotSpot虚拟机和JAVA内存区域堆为例,探讨对象的创建,对象的内存布局以及对象的访问定位 一.对象的创建 1)类加载:虚拟机遇到一条new指令时,先检测这个指令的参数能否在常量池中定位到 ...

  4. face detection[SSH]

    该文来自<SSH: Single Stage Headless Face Detector>,本文时间线2017年8月. 不同于face rcnn那种两阶段的方法,SSH和ssd一样是一阶 ...

  5. input表单提交完毕,返回重新填入有黄色背景,和 历史记录 清除

    <input autocomplete="value"> // 添加这个属性,可以解决然后添加一个css input:-webkit-autofill {box-sha ...

  6. Node.js这么下去...

    Node.js是基于javascript的.event驱动的单进程服务器(也能实现cluster模式,只要一个fork()语句,类似于C语言的进程创建). 所以大胆估计:Node.js会把很多大网站吞 ...

  7. ML.NET 示例:推荐之矩阵分解

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  8. [翻译] ASP.NET Core 利用 Docker、ElasticSearch、Kibana 来记录日志

    原文: Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 一步一步指导您使用 ElasticSearch, Kibana, ASP ...

  9. Linux或Windows上实现端口映射

    通常服务器会有许多块网卡,因此也可能会连接到不同的网络,在隔离的网络中,某些服务可能会需要进行通信,此时服务器经过配置就可以承担起了转发数据包的功能. 一.Windows下实现端口映射 1. 查询端口 ...

  10. 重装mysql后导致Navicat连接失败

    今天重装了mysql数据库,然后再使用navicat去连接数据库的时候,一直报错 1251 Client does not support authentication protocol reques ...