一、算术运算符使用数值(字面量或者变量)作为操作数并返回一个数值。
二、标准的算术运算符就是加减乘除(+-*/)。
三、当操作数是浮点数时,这些运算符表现得跟它们在大多数编程语言中一样。
1、除零会产生Infinity
【实例1】
1 / 2 // 0.5
1 / 2 == 1.0 / 2.0 // true
三、算术运算符
Operator | Description | Example |
---|---|---|
+ | ||
- | ||
* | ||
/ | ||
求余(%) | 二元运算符,返回相除之后的余数。 | 12 % 5 返回2 |
自增(++) | 一元运算符。将操作数的值加一。 前置自增运算符:如果放在操作数前面(++x),则返回加一后的值; 后置自增运算符:如果放在操作数后面(x++),则返回操作数原值,然后再将操作数加一。 |
var x = 3 console.log(++x) // 4 console.log(x) // 4 va y = 3 console.log(y++) // 3 console.log(y) // 4 |
自减(—) | 一元运算符 将操作数的值减一,前后缀两种用法的返回值类似自增运算符 |
var x = 3 console.log(—x) // 2 console.log(x) // 2 var y = 3 console.log(y—) // 3 console.log(y) // 2 |
一元负值符(-) | 一元运算符,返回操作数的负值 | var x = 3 console.log(-x) // -3 |
一元正值符(+) | 一元操作符,如果操作数在之前不是number,试图将其转换为number | console.log(+’3’) // 3 console.log(‘3’) // ‘3’ console.log(+true) // 1 |
指数运算符(**) | 计算base(底数)的exponent(指数)次方,表示为baseexponent | 2 3 // 8 10 -1 // 0.1 |
用二元运算符 + 连接字符串
一、通常,加号+用于求和。
二、但是如果加号+被应用于字符串,它将合并(连接)各个字符串:
let s = "my" + "string";
alert(s); // mystring
三、注意:只要任意一个运算元是字符串,那么另一个运算元也将被转化为字符串。
【示例1】
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
【示例2】
alert(2 + 2 + '1' ); // "41",不是 "221"
1、在这里运算符是按顺序工作。第一个+将两个数字相加,所以返回4,然后下一个+将字符串1加入其中,所以就是4 + ‘1’ = 41。
四、二元+是唯一一个以这种方式支持字符串的运算符。其他算术运算符只对数字起作用,并且总是将其运算元转换为数字。
【示例1】减法和除法运算的示例:
alert( 6 - '2' ); // 4,将 '2' 转换为数字
alert( '6' / '2' ); // 3,将两个运算元都转换为数字
取余 %
一。取余运算符是%,尽管它看起来很像百分数,但实际并无关联。
【示例1】a % b的结果是a整除b的余数。
【示例2】
alert( 5 % 2 ); // 1,5 除以 2 的余数
alert( 8 % 3 ); // 2,8 除以 3 的余数
求幂 **
一、求幂运算a ** b是a乘以自身b次。
【示例1】
alert( 2 ** 2 ); // 4 (2 * 2,自乘 2 次)
alert( 2 ** 3 ); // 8 (2 * 2 * 2,自乘 3 次)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2,自乘 4 次)
二、在数学上,求幂的定义也适用于非整数。
【示例1】平方根是以1/2为单位的求幂:
alert( 4 ** (1/2) ); // 2(1/2 次方与平方根相同)
alert( 8 ** (1/3) ); // 2(1/3 次方与立方根相同)
自增/自减
一、定义
1、自增:++将变量与 1 相加:
counter++;
| 【示例】```javascript let counter = 2; counter++; // 和 counter = counter + 1 效果一样,但是更简洁 alert( counter ); // 3
|
| --- |
2、自减:--将变量与 1 相减:
```javascript
counter--;
| 【示例】```javascript let counter = 2; counter—; // 和 counter = counter - 1 效果一样,但是更简洁 alert( counter ); // 1
|
| --- |
二、自增/自减只能应用于变量。将其应用于数值(比如5++)则会报错。<br />三、自增/自减和其它运算符的对比<br />1、++/--运算符同样可以在表达式内部使用。它们的优先级比绝大部分的算数运算符要高。
| 【示例】```javascript
let counter = 1;
alert( 2 * ++counter ); // 4
| | —- |
| 【示例】```javascript let counter = 1; alert( 2 * counter++ ); // 2,因为 counter++ 返回的是“旧值”
1、技术层面上可行,但是降低了代码的可阅读性。我们建议用“一行一个行为”的模式:```javascript
let counter = 1;
alert( 2 * counter );
counter++;
| | —- |
前置形式 / 后置形式
一、运算符++和—可以置于变量前,也可以置于变量后。
- 当运算符置于变量后,被称为“后置形式”:counter++。
- 当运算符置于变量前,被称为“前置形式”:++counter。
1、两者都做同一件事:将变量counter与1相加。
2、区别
(1)前置形式(++counter)返回一个新的值,但后置(counter++)返回原来的值(做加法/减法之前的值)。
(2)counter++不能作为左值,而++counter可以。
| 【示例】为了直观看到区别,看下面的例子:```javascript / 前置形式 / let counter = 1; let a = ++counter; // 前置形式++counter,对counter做自增运算,返回的是新的值2 let b = ++counter;
console.log(counter); // 3 console.log(a); // 2 console.log(b); // 3
```javascript
/* 后置形式 */
let counter = 1;
let a = counter++; // 后置形式counter++,它同样对counter做加法,但是返回的是旧值(做加法之前的值)
let b = counter++;
console.log(counter); // 3
console.log(a); // 1
console.log(b); // 2
| | —- |
| 【示例】下列代码输出结果为:```javascript function out(x){ var temp = 2; function inside(y){ console.log( x + y + (temp—)); } inside(5); } out(3);
**答案**:10 |
| --- |
| 【示例】```javascript
var a = 1;
var b = (a++)+(a++); // 3
var c = (++a)+(++a); // 5
var d = (a++)+(++a); // 4
var e = (++a)+(a++); // 4
var f = ++a+(a++); // 4
var g = ++a+a++; // 4
知识点:运算符优先级、自增定义、自增返回值
解析:
1. 运算符优先级:()高于自增++
1. 自增定义:++将变量与1相加
1. 自增返回值:前置形式(++a)返回新值,后置形式(a++)返回原来的值
```javascript
var a = 1;
var b = (a++)+(a++); // 3 // (1++)+(2++) = 1 + 2 = 3
var c = (++a)+(++a); // 5 // (++1)+(++2) = 2 + 3 = 5
var d = (a++)+(++a); // 4 // (1++)+(++2) = 1 + 3 = 4
var e = (++a)+(a++); // 4 // (++1)+(2++) = 1 + 3 = 4
var f = ++a+(a++); // 4 // ++2+(1++)= 3 + 1 = 4
var g = ++a+a++; // 4 // ++1+2++ = 2+2++ = 4++ = 4
|
| --- |
二、使用<br />1、如果自增/自减的值不会被使用,那么两者形式没有区别:
| 【示例】```javascript
let counter = 0;
counter++;
++counter;
alert( counter ); // 2,以上两行作用相同
| | —- |
2、如果我们想要对变量进行自增操作,并且需要立刻使用自增后的值,那么我们需要使用前置形式:
| 【示例】```javascript let counter = 0;
alert( ++counter ); // 1
|
| --- |
3、如果我们想要将一个数加一,但是我们想使用其自增之前的值,那么我们需要使用后置形式:
| 【示例】```javascript
let counter = 0;
alert( counter++ ); // 0
| | —- |