slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
一些你可能不了解且有趣的JavaScript运算符列表
17611538698
webmaster@21cto.com

一些你可能不了解且有趣的JavaScript运算符列表

资讯 0 2540 2020-05-20 12:04:13
1_hLSiwh3HW9Pqw0M3gLEMOg.png


在JavaScript中,有许多好用且有趣的运算符。一些运算符会使你的代码看起来更简单。

感叹号(!)-逻辑非

有一些逻辑运算符可用于更方便地检查某些值。其中,感叹号for Logical Not非常有用。它将真实或虚假的值转换为布尔值,但是此运算符切换该值的评估布尔值。

如果该值为true或true,则!value为false或false,反之亦然。
!1 // false
!-1 // false
!0 // true
!function() {} // false
!{} // false
!'' // true
!NaN // true
!null // true
!undefined // true

双重感叹号(!!)-双重逻辑非

这将显式强制将一个值转换为相应的布尔值。这与在已转换为布尔值的!value上加上一个感叹号(!)相同。
!!true // true
!!{} // true
!!(new Boolean(false)) // true
!!false // false
!!'' // false
!!Boolean(false) // false
有趣的是!! Boolean(false)和!!(new Boolean(false))给了我们一个不同的结果。如果不带new调用布尔构造函数,则它会返回一个布尔值。但是,如果使用new调用,它将返回Boolean的实例对象。所以!! Boolean(false)等于!! false,但是!!(new Boolean(false))等于!!(Boolean的实例),就像!! Object。

双星号(**)-求幂

这与Math.pow(x,y)完全相同,后者等于x ^ y。你们中的许多人可能仅在需要时才使用Math.pow。该运算符将使代码更漂亮!

要记住的一件事是IE不支持exponentiation(**)运算符。
 
2 ** 3 === Math.pow(2, 3) // 8
-(2 ** 2) === -Math.pow(2, 2) // -4
10 ** -1 === Math.pow(10, -1) // 0.1

波浪号(〜)—按位非

代字号(〜)是电脑键盘上数字1旁边的花键,它是JavaScript中的运算符,用于处理位。JavaScript(以及其他编程语言)在处理数字时会使用位。如果你不知道两个的补数,请查看Wikipedia中的文章,以了解JavaScript如何对负数起作用。
9 (base 10) = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)

该公式实际上非常简单。如果整数是K,则〜K变为-(K +1)。
〜9 =>-((9 +1)=> -10〜
-10 =>-(-10 +1)=> 9
Double Tilde(~~)— Math.floor和Math.trunc

 正如 !!从真假到真,从假真到假,双波浪号(~~)也将浮点数变成整数。单个波浪号(〜)对于数字不是按位的。最重要的一点是,从正变为负,或从负变为正。由于只有一个波浪号,所以我们只需增加一个波浪号即可将其恢复为原始符号号。但是,一旦将波浪号放在数字的开头,则小数点(。)右侧的浮点数将被忽略。
~5.5 => -6
~-6 => 5
~~5.5 === Math.floor(5.5) // true
~~-5.5 === Math.trunc(-5.5) // true


而且根据stackoverflow,这比Math.floor。当数字为负数时,Math.trunc将是适合你的数字。

使用toString的双倍句号

你对将十进制数字转换为二进制数字有什么了解?toString是将十进制更改为二进制的典型方法。它的常见用法可能是Number.toString。但是,也可以如下所示。
5..toString(2)//'101'Number(
5).toString(2)=== 5..toString(2)// true

IIFE与运算符

你如何用JavaScript编写IIFE(立即调用函数表达式)?最常见的方式可能是这样。
(function() {
// do your work
})();

但是,还有其他立即运行函数的方法,尽管并不常见。
const msg = ;

+function(){
msg.push('Hello');
}()

-function() {
msg.push('World');
}()

~function(){
msg.push('!');
}()

~~function() {
msg.push('My name');
}()

!function() {
msg.push('is');
}()

!!function() {
msg.push('Moon');
}()

console.log(msg.join(' ')); // Hello World ! My name is Moon

你注意到这是如何工作的吗?主键是在其右侧放置一个运行操作数的运算符。例如,!5返回false。为什么?因为!计算5并确定!5应该为true,因为它是真实性值。这样,任何运行和评估操作数的运算符都可以运行后面的函数,因为还必须为其运算符运行和评估函数,例如!!或〜。

结论

当然,并不是所有这些在现实中都被广泛使用。但是有时你可能需要它们。其中一些可确保更快的速度和更好的性能。那么,为什么不考虑有一天使用它们呢?

翻译:web前端
英文:https://medium.com/better-programming/a-list-of-interesting-operators-in-javascript-22fdacfbbce9


评论