经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去。例如下面代码:

functiontest1(obj){if(obj){

alert($(obj).val());

}else{

alert("has not obj");

}

}

我们分别点击上面的两个输入框显示如下:

解释:实际上相当于java中的重载,如果传参数了就走if(obj),不传参数就走else。

也就是如果参数不为空或者nul或者undefinedl或者“”空串则if(obj)成立。

进一步的测试:

functiontest1(obj){if(obj){

alert("has obj");

}else{

alert("has not obj");

}

}

test1();//has not obj

test1(null);//has not obj

test1(undefined);//has not obj

test1("");//has not obj

test1(" ");//has obj

test1("1");//has obj

总结:不传参数,传的参数为null,传的参数为undefined,传的参数为""的时候if(obj)不成立,反之则成立。

补充:直接if(param)可以用于判断参数,也相当于if(param != null),相反if(!param)就相当于if(param == null),例如:

functiontest(a, b) {if (!a || !b) {

alert("参数没传");

}else{

alert("a与b不等于null")

}

}

test();

test("1", "2");

结果:

补充:实际上是用!与上对象来求得一个布尔值,js中!和!!的区别及用法

js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,

1、!可将变量转换成boolean类型,null、undefined和空字符串、数字0 通过!转为boolean值0为true,其余为false。

!null=true

!undefined=true

!''=true

!100=false

!'abc'=false

!0=true

特别注意0的情况。

2、!!  常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:

判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;if(a!=null&&typeof(a)!=undefined&&a!=''){//a有内容才执行的代码

}

实际上只需要一个表达式:

if(!a){//a有内容才执行的代码...

}

比如:如下一个验证值必填的函数,有值的话返回true,没值的话返回字符串消息"required."

functionrequired(val) {return !!val || 'required.';

}

console.log(required());

console.log(required(''));

console.log(required(0));

console.log(required("xxxxx"));

结果:

(1)required('')解释: !'' 返回的是true, 再进行一次!之后是false。 所以会返回后面的字符串。

(2)required("xxxxx")解释: !"xxxxx" 返回的是false,再进行一次 ! 返回的是true。因此不与后面的字符串进行逻辑或运算,直接返回true。

js中的if与Java中的if_JS直接if参数的用法JS中!和!!区别相关推荐

  1. python命令行参数有什么用_一文看懂命令行参数的用法——Python中的getopt神器

    参考原文: Python模块之命令行参数解析 - 每天进步一点点!!! - 博客园 https://www.cnblogs.com/madsnotes/articles/5687079.html py ...

  2. linux中du命令参数的用法,linux中du命令参数及df命令和dd命令介绍

    本文详细介绍了linux中du命令参数及df命令和dd命令的使用方法,并对之进行了举例说明. linux中df命令参数 linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获 ...

  3. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  4. java val变量声明_Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 时间:Nov 28, 2016 原文链接:http://ant ...

  5. matlab中fminunc函数使用方法,关于Matlab:了解fminunc参数和匿名函数,函数处理程序...

    请多多包涵. 问题在最后. 我试图弄清楚如何调用fminunc的区别. 这个问题来自于Andrew Ng在Coursera机器学习课程中的第3周材料. 我正在摆脱这个问题. Matlab:Andrew ...

  6. java 设置头错误信息,错误:在node.js中发送标头后无法设置标头

    我在node.js中写了这个简单的登录代码: var express = require ("express"); var badyparser = require (" ...

  7. java attributes用法_C#中的Attributes的用法

    今天研究了一下C#中的Attributes的用法,感觉很有用,现总结以下: 在前台用JS写的脚本方法,除了可以直接用在前台控件的属性中,还可以在后台运用. 即在后台页面加载时,调用JS方法.语法格式有 ...

  8. JavaWeb中外部引入的js中涉及到location.href的页面跳转/jsp页面的外部js文件引入

    当js在jsp页面中写的时候没有任何问题如下所示: function deleteP(obj){if(confirm("你真舍得丢弃我吗?")){//发送请求location.hr ...

  9. java匹配任意,java有关正则表示式,我想匹配一个字串中的任意字元,怎么办?...

    java有关正则表示式,我想匹配一个字串中的任意字元,怎么办?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java有 ...

最新文章

  1. 有兴趣的执行一下这段代码
  2. 1008c语言答案,c语言大作业题目01008.doc
  3. Bootstrap入门(十三)组件7:导航条
  4. AssertionError: Path does not exist: py-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main
  5. wireshrk中的名词说明
  6. 4.4 高斯消元法的矩阵表示
  7. 善用Object.defineProperty巧妙找到修改某个变量的准确代码位置
  8. 【个人网盘-updog】使用updog建立个人网盘,so easy
  9. transform: translate()
  10. 上海服务器虚拟机系统,服务器虚拟机系统重装系统
  11. Neo4j如何对大量数据-(千万节点及以上数据)进行加载入库
  12. 最简单解决jpa自动生成表后字段乱序问题
  13. 算法导论第三版 21.2-3习题答案
  14. VMware 15.5.7 的下载与安装
  15. 根据经纬度查询具体地址
  16. 编写测试用例方法之错误推测法
  17. 携职教育:个税APP申报流程
  18. 阿尔法c语言程序设计考试题,计算机考试习题
  19. html调用rpst 源码_在web页面中播放rtsp直播数据流方法
  20. 公网部署freeswitch1.8.6后,终端注册成功后,在fs_cli控制台执行originate user/1000 echo,呼通1000的SIP终端后,终端讲话没有收到fs的回声解决方法

热门文章

  1. Linux下调tcp最大参数
  2. Bootstrap模态框显示时有阴影遮罩层
  3. div和div之间画横线_javascript – jQuery – 使用画布在div之间绘制线条
  4. golang 函数传多个参数_关于Golang中方法参数的传递
  5. http安全 Java_HTTP通信安全-身份验证 | 字痕随行
  6. xbox360无线手柄接收器驱动_八位堂USB 无线接收器让手柄不闲置,无线畅玩各平台游戏...
  7. linux更新系统内核,如何更新Linux内核来提升系统性能?
  8. linux 环境变量详解,linux环境变量实例详解
  9. java中的io复用_从 Java 中的零拷贝到五种IO模型
  10. npm的镜像替换淘宝