(转载)JS 中 逻辑运算符的用法

(转载)JS 中 逻辑运算符的用法

一、感叹号

  1. 一个感叹号
    一个感叹号(!)最好理解,也是我们经常使用的。!可以将变量转为boolean值,所有的truthy和falsy都可以被转化,比如null、undefined、数字0和空字符串取反都为true,其余都为false。
!null = true
!undefined = true
!"" = true
!0 = true
!100 = false
!"asdss" = false

注意:truthy和falsy不是true和false

  1. 两个感叹号
    两个感叹号(!!),学习时比较少见到,通常用来判断变量是不是truthy或者falsy,这么说好像和前面一样?不,一个感叹号只是单个判断比如只对null或者只对undefined,使用两个!!可以对所有truthy和falsy判断,比如:
	let a; // null、undefined、''、0
    if (a !== null && typeof(a) !== "undefined" && 
        a !== undefined && a !== '' && a !== 0){
          //a为truthy时才执行,或者说a为真值时才执行
       }
let a;
if(!!a){
//a为truthy时才执行,或者说a为真值时才执行
}

这两种方法的功能一样,但是明显下面一种更加简洁。

好像还有三个!!!的,但是并没有什么用处。似乎是将1和2都做了一遍,然后回到原点。

二、3个点(…)
三个点用于传参时可以看作是Rest参数的逆运算,将一个数组转为用逗号分隔的参数数组,就是说将参数数组展开了传入函数中。

let a = [1,2,3]
function f(x1,x2,x3){
	...
}
f(...a) // 等价于 f(1,2,3)

Rest参数和arguments对象的区别:

rest参数只包括那些没有给出名称的参数,arguments包含所有参数
arguments 对象不是真正的数组,而rest 参数是数组实例,可以直接应用sort, map, forEach, pop等方法
arguments 对象拥有一些自己额外的功能
当用于函数形参时,后面就不能有其他参数,如下将会报错

function func(a, ...b, c) {
    // ...
}
// Rest parameter must be last formal parameter

使用三个点,在许多时候可以代替数组的apply方法

// ES6以前
Math.max.apply(null, [22, 2, 222])
// ES6
Math.max(...[22, 2, 222])
//  等价于
Math.max(22, 2, 222);

————————————————
版权声明:本文为优快云博主「l_jh1520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_40877427/article/details/85627780

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值