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。

JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法的更多相关文章
- 原生js判断css动画结束 css 动画结束的回调函数
原文:原生js判断css动画结束 css 动画结束的回调函数 css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画是否结束:即使是采用CSS技术生成动画效果,Jav ...
- js判断input输入框为空时遇到的问题 弹窗后,光标没有定位到输入框,而是直接执行我的处理页面程序
无论是会员注册还是提交订单,我们都要使用到form表单,此时我们在处理数据时,就要判断用户填写的信息.一次是直接通过js判断input输入框是否没有填信息,然后在后台处理文件中通过过滤字符串后再次判断 ...
- C 语言中的 switch 语句 case 后面是否需要加大括号
事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...
- js判断语句关于true和false后面跟数字或字符串的问题
我经常在代码中看到很长串判断,看到就头疼,简单的整理一下. 比如:(client.top>=0&&client.left>=0&&client.bottom ...
- js实现IOS上删除app时颤抖动画j函数
欢迎提供更好的方法! <!--http://www.cnblogs.com/webzhangnan/p/3244920.html --> <html> <head> ...
- C# if判断语句执行顺序
DataTable dt = null; )//不报错,因为先执行dt != null 成立时才执行dt.Rows.Count > 0 { } && dt != null)//报 ...
- 浅谈js回调函数
回调函数原理: 我现在出发,到了通知你”这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程 例子 1.基本方法 ? 1 ...
- 采用指数退避算法实现ajax请求的重发,全部完成时触发回调函数
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- 详解回调函数——以JS为例解读异步、回调和EventLoop
回调,是非常基本的概念,尤其在现今NodeJS诞生与蓬勃发展中变得更加被人们重视.很多朋友学NodeJS,学很久一直摸不着门道,觉得最后在用Express写Web程序,有这样的感觉只能说明没有学懂 ...
随机推荐
- Jupyter notebook工具栏隐藏和jupyter notebook主题更改
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10747200.html 一.问题 Jupyt ...
- Android 读取后台数据并显示。模拟小区车辆管理系统
帮别人做的演示系统,只具有基本的增删查改功能. 核心是android端和后台通过http传输数据 后台是asp.net,数据库是ms sql 2008 android端 private void ge ...
- JavaEE学习之JPA中配置文件persistence.xml
下面是我从网上找到的关于JPA配置文件persistence.xml的相关描述: <?xml version="1.0" encoding="UTF-8" ...
- 对写博客的n种思考
喜欢才能坚持 开始写博客的原因非常功利,功利到不好意思说. 反正你们也懂的,就那么几种. 问题是,如果心态一直这么功利,而写博客的前期回报几乎为零,情绪会变得沮丧,不知如何继续. 不过后来想想,其实做 ...
- RNG牛掰!
2018-05-21 RNG牛掰!Uzi圆梦! 不说了,先去哭了! 2018-07-08 洲际赛后更新,RNG依然牛逼! 2018-08-30 亚运后后更新,UZI加油! 2018-10-22 继续加 ...
- 通过this()调用有参构造方法
使用原因:在通过无参构造方法实例化对象时,如果有属性可以设置默认值,可通过在无参构造方法中使用this()调用有参构造方法实现. this()需要写在无参构造方法的第一行! 例子:在没有给出小猫的名字 ...
- UnderWater+SDN论文之五
Underwater Sensor Networks with Mobile Agents: Experience from the Field Source: LNICST 2013 论文是来自两个 ...
- java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader
我的解决办法: 1.如果是application工程,则在程序中打印出 system.out.println(System.getProperty("java.endo ...
- 我的集合学习笔记--ArrayList
一,ArrayList 实现自己的ArrayList:主要是添加方法,理解自动扩容机制 代码+注释 package com.amazing.jdk.learn2List.list_08_13; /** ...
- HDU 2001 计算两点间的距离
http://acm.hdu.edu.cn/showproblem.php?pid=2001 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离 ...