一、感叹号
一个感叹号 一个感叹号(!)最好理解,也是我们经常使用的。!可以将变量转为boolean值,所有的truthy和falsy都可以被转化,比如null、undefined、数字0和空字符串取反都为true,其余都为false。 !null = true !undefined = true !"" = true !0 = true !100 = false !"asdss" = false注意:truthy和falsy不是true和false
两个感叹号 两个感叹号(!!),学习时比较少见到,通常用来判断变量是不是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.csdn.net/weixin_40877427/article/details/85627780