使用 !! && || 进行骚操作

说起强制类型转换,大家能想起什么?但这篇文章不是只有强类型转换这样简单哟,它会让你开发另一种思路!

使用强制类型转换(type casting)处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
  • Boolean(val) 转换成Boolea
  • Number(val) 转换成数字
  • String(val) 转换成字符

以上三种很熟悉吧?在js中,将某值强制类型转换成布尔值当然可以使用Boolean()这种方法。需要用到布尔转换的地方还是很多的,但你要用这种方法吗?

其实还有一种方法,大家很少接触,就是!!你没看错,就是两个叹号。利用两个'!!'运算符来将一个值转换为布尔类型,要比Boolean()简单不少吧。

!!1 //true
!!0 //false
!!'' //false
!!'a' //true
!!null //false
!!{} //true
!![] //true  

为什么可以这样做呢?其实分析起来道理很简单。第一个'!'将值转换成布尔值并取其值的非值,第二个'!'将其布尔值还原,类似于“负负得正”的道理。我们看个例子吧:

以上就是双叹号的用法,当然不止!!,还有&& 和 || 可以做判断使用。大家肯定知道这两点一个代表逻辑与一个代表逻辑或。那么怎么使用呢?使用赋值语句将多个值用&& 和 ||相连。

var a = 'a' && 0;a //0  逐一检索&&相连的值,遇到第一个false值就将该值赋值给变量 
var a = 'a' && 1;  // 如果逐一检测没有false的值,就取最后一个值赋值给变量
var a = '' || 1;  //逐一检索到第一个true值,直接复制给变量
var a = '' || 0; //逐一检测如都是false值就取最后一个赋值给变量 

使用 !! && || 进行骚操作_第1张图片

这波操作虽然让我们眼前一亮,但在哪里用得到呢?我们先看个简单的函数,能不能懂,慢慢看别着急。
使用 || 可以用于参数传递中。在封装某个函数的时候,传递的参数可能有,可能没有,这种情况就可以使用 || 处理。

function test(arr) {arr = arr || [];return arr;}
test([1,2,3])
test()

使用 !! && || 进行骚操作_第2张图片

如果参数有数组,当然参数就是它自己。如果没有传参数或者传的是null或者undefined之类会转换为false的值,就在函数传递参数时做非空补充,避免在参数使用时出现问题。

那么&&在实 开发中哪里可以用到呢?举个例子吧!比如判断某个值后如果是false就执行回调函数。

 function aaa(isOk,callBack) {isOk && callBack()};
 aaa(1,function(){console.log('haha')});

使用 !! && || 进行骚操作_第3张图片

以上就是想分享的内容啦!

也希望大家能关注我的公众号web-jianma,手机浏览随时随地~

你可能感兴趣的:(javascript前端)