js中的if与Java中的if_JS直接if参数的用法&JS中!和!!区别

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

function test1(obj){

if(obj){

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

}else{

alert("has not obj");

}

}

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

59907f0b2c9ebcd4125b8845eaa1b788.png

49281d90b5792de46d733d2cebc2faf1.png

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

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

进一步的测试:

function test1(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),例如:

function test(a, b) {

if (!a || !b) {

alert("参数没传");

} else {

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

}

}

test();

test("1", "2");

结果:

96a27f89356e2b27ccfc14212bb0f6c0.png

ce5357f47a23bf1fbc583875367f2099.png

补充:实际上是用!与上对象来求得一个布尔值,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.”

function required(val) {

return !!val || 'required.';

}

console.log(required());

console.log(required(''));

console.log(required(0));

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

结果:

e9089e46706137a1dd3f3b828d51801d.png

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

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

https://www.cnblogs.com/qlqwjy/category/1035591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值