!1 // false
!-1 // false
!0 // true
!function() {} // false
!{} // false
!'' // true
!NaN // true
!null // true
!undefined // true
!!true // true有趣的是!! Boolean(false)和!!(new Boolean(false))给了我们一个不同的结果。如果不带new调用布尔构造函数,则它会返回一个布尔值。但是,如果使用new调用,它将返回Boolean的实例对象。所以!! Boolean(false)等于!! false,但是!!(new Boolean(false))等于!!(Boolean的实例),就像!! Object。
!!{} // true
!!(new Boolean(false)) // true
!!false // false
!!'' // false
!!Boolean(false) // false
2 ** 3 === Math.pow(2, 3) // 8
-(2 ** 2) === -Math.pow(2, 2) // -4
10 ** -1 === Math.pow(10, -1) // 0.1
9 (base 10) = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
〜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
5..toString(2)//'101'Number(
5).toString(2)=== 5..toString(2)// true
(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
翻译:web前端
英文:https://medium.com/better-programming/a-list-of-interesting-operators-in-javascript-22fdacfbbce9
本文为 @ 21CTO 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。