JavaScript 表达式和运算符(一)

加法赋值 (+=)

加法赋值操作符 (+=) 将右操作数的值添加到变量,并将结果分配给该变量。两个操作数的类型确定加法赋值运算符的行为。加法或串联是可能的。

let a = 2;
let b = 'hello';

console.log(a += 3); // addition
// expected output: 5

console.log(b += ' world'); // concatenation
// expected output: "hello world"

相加运算符 (+)

相加运算符 (+) 用于对两个操作数进行相加运算,如果操作数为字符串则该运算符将两个操作数连接成一个字符串。

console.log(2 + 2);
// expected result: 4

console.log(2 + true);
// expected result: 3

console.log('hello ' + 'everyone');
// expected result: "hello everyone"

console.log(2001 + ': A Space Odyssey');
// expected result: "2001: A Space Odyssey"

赋值运算符(=)

简单赋值操作符(=)用于为变量赋值。赋值表达式本身的值为其完成后被赋值的变量的值。为了给多个变量赋一个值,可以链式使用赋值操作符。

let x = 2;
const y = 3;

console.log(x);
// expected output: 2

console.log(x = y + 1); // 3 + 1
// expected output: 4

console.log(x = x * y); // 4 * 3
// expected output: 12

按位与赋值(&=)

按位与赋值运算符(&=)表示两个操作数的二进制,对它们进行按位AND运算并将结果分配给变量。

例子

let a = 5;      // 00000000000000000000000000000101
a &= 3;         // 00000000000000000000000000000011

console.log(a); // 00000000000000000000000000000001
// expected output: 1

语法

Operator: x &= y
Meaning:  x  = x & y

按位与 (&)

按位与运算符 (&) 在每个位上返回 1 ,这两个操作数对应的位都是 1.

语法

a & b

描述

操作数被转换为32位整数,并由一系列位(0和1)表示。 超过32位的数字将丢弃其最高有效位。 例如,以下大于32位的整数将被转换为32位整数:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

第一个操作数中的每个位都与第二个操作数中的相应位配对:第一位到第一位,第二位到第二位,依此类推。

将运算符应用于每对位,然后按位构造结果。

与运算的真值表:

aba AND b
000
010
100
111
.    9 (base 10) = 00000000000000000000000000001001 (base 2)
    14 (base 10) = 00000000000000000000000000001110 (base 2)
                   --------------------------------
14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)

将任何数字x0进行按位与运算将得出0

示例

使用按位与

// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
5 & 2; // 0

按位非 (~)

按位非运算符(~),反转操作数的位。

语法

~a

描述

操作数被转换为32位二进制表示(0和1)。超过32位的数字将丢弃其最高有效位。如下例子中,超过32位的整数转换为32位整数:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

第一个操作数中的每个位都与第二个操作数中的相应位配对:第一位到第一位,第二位到第二位,依此类推。

将运算符应用于每对位,然后按位构造结果。

非运算的真值表:

aNOT a
01
10
 9 (base 10) = 00000000000000000000000000001001 (base 2)
               --------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)

按位非运算时,任何数字x的运算结果都是``-(x + 1)。例如,〜-5运算结果为4

Note that due to using 32-bit representation for numbers both ~-1 and ~4294967295 (232-1) results in 0.

请注意,由于对数字~-1~4294967295 (232-1) 使用32位表示形式,结果均为0。

例子

使用按位取反

~0;  // -1
~-1; // 0
~1;  // -2

参考文档MDN

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值