日期:2014-05-16  浏览次数:20377 次

JS中if语句参数类型为boolean&&string、boolean&&int等情况

????? 最近在新公司熟悉信息管理系统,由于公司的信息系统功能主要是报表数据的体现等逻辑功能上,所以采用了ExtJS开发。对于之前一直做企业服务器方面的开发的我,接触JS比较少,所以对于JS方面的知识还是相对比较薄弱的。在此我写下此文章,并不是表现自己的技术如何如何,只是想对自己在技术方面的学习的一个总结一个回顾,所以在写的时候,我只会根据个人的技术观点来写,并不会太去考究技术方面的用词等是否准确。只是想记录自己学习技术的一个历程。

????? 其实自己在技术方面也只是一个新人,只是个人觉得自己在学习软件开发方面,相对比较用心,比较灵活,谨记着父亲的“做一行爱一行”这句话,所以相对于其他技术新人,发展得比较快。

?

????? 好了,言归正转,在看项目的时候,遇到一个语句为if(a&&b){};其中,a为boolean类型,b为string类型。当时我就很好奇,这种写法也可以,我在之前的服务器应用方面的开发中一直不知道if语句还可以这么写,也许真由于自己之前的工作中接触JS比较少。后来才知道,这个语句在类里面是不可以的,在js里面其实是可以的。

????? 又由于最近的新公司管理制度在个人看来有点不人性化,居然不让我们做软件开发的工作人员有上网查阅的权限。所以我只能通过自己去写代码验证了。所先我先在类里面写了此if语句,确实报错,boolean和string类型不匹配。后来我在js中写入此语句,确实可以。接着我就在JS中写了如下语句用来进一步验证,加强自己对此类if语句的认识。

?

<script type="text/javascript">
??????? var a = "123";
??????? var b = "";
??????? var c = null;
??????? var d = true;
??????? var e = false;
??????? var f = 8;
??????? function testOne() {
??????????? if (d && a) {???????????????????? //返回为true,弹出对话框
??????????????? alert("true与不为空的字符串情况");
??????????? }
??????????? if (d && b) {??????????????? // 返回false,不弹出对话框
??????????????? alert("true与为空的字符串情况");
??????????? }
??????????? if (d && null) {???????????? // 返回false,不弹出对话框
??????????????? alert("true与null的情况");
??????????? }
??????????? if (d && f) {???????????? // 返回true,弹出对话框
??????????????? alert("true与int的情况");
??????????? }
??????????? if (e && a) {???????????????????? //返回为false,不弹出对话框
??????????????? alert("false与不为空的字符串情况");
??????????? }
??????????? if (e && b) {??????????????? // 返回false,不弹出对话框
??????????????? alert("false与为空的字符串情况");
??????????? }
??????????? if (e && null) {???????????? // 返回false,不弹出对话框
??????????????? alert("false与null的情况");
??????????? }
??????????? if (e && f) {???????????? // 返回false,不弹出对话框
??????????????? alert("false与int的情况");
??????????? }
??????? }
??????? testOne();

</script>

?

根据上面的js验证,我自己总结出了一个结论:那就是当为boolean&&string时,如果string参数的长度为0时,string返回的是false,这点从boolean为true,string为“123”、“”、null各自的结果可以判断出。当然这个结论我没上网查阅资料进行验证,不过我想我自己的猜测应该没错吧。

?

如果讲得有错误,欢迎大家进行纠正!