数字和运算符

我们讨论 JavaScript 中的数学--看看如何使用运算符和其他功能来操作数字。

数字类型

在编程时,即使是我们都知道的最普遍的十进制数,也比你想象的要复杂的多。我们使用不同的术语来描述不同类型的十进制数,例如:

  • 整数 Integers 。 就是整数,例如 10, 400, 或者 -5.
  • 浮点数 floats 。 有小数点或小数位,例如 12.5,和 56.7786543。
  • 双精度 Doubles 。双精度是一种特定类型的浮点数,它们具有比标准浮点数更高的精度(这意味着它们精确到更大的小数位数)。

除了十进制,还有其他不同类型的数字系统:

  • 二进制 — 电脑的最基础语言,使用 0 和 1
  • 八进制 - 基数 8,使用 0-7
  • 十六进制 - 基数 16,使用 0-9,以及 a-f。 在 CSS 中设置颜色时,可能会遇到这些数字。

好消息是,与其他一些编程语言不同,JavaScript 只有一个数据类型,Number。 这意味着,在 JavaScript 中处理的任何类型的数字,都以完全相同的方式处理它们。

动手操作一下:

  1. 首先,我们先声明一对变量,并分别用一个整数和一个浮点数来初始化它们,然后再输入变量名来检查是否正确:
var myInt = 5
var myFloat = 6.667
myInt
myFloat
  1. 输入数字时不要添加引号

  2. 现在来看看我们的原始变量是否是相同的数据类型。 在 JavaScript 中有一个称为 typeof 的运算符。 输入如下所示的两行:

typeof myInt
typeof myFloat

在这两种情况下,输出都是 “数字”("number") 。

算数运算符

 +	加法	两个数相加。	6 + 9
 -	减法	从左边减去右边的数。	20 - 15
 *	乘法	两个数相乘。	3 * 7
 /	除法	用右边的数除左边的数	10 / 5
 %	求余(有时候也叫取模) 8 % 3 (返回 2,将8分成3份,余下2 。)

运算符优先级

有下面的运算:

num2 + num1 / 8 + 2

 我们很希望  效果是“num2 加上 num1 之和除以 10”。但是实际  中 num1/8 会首先被运算。

这是因为运算符优先级。 JavaScript 中的运算符优先级与学校的数学课程相同 - 乘法和除法总是先完成,然后加法和减法。

如果要覆盖运算符优先级,可以使用括号:

(num2 + num1) / (8 + 2)

点击这里 查看完整的优先级列表。

递增和递减运算符

英文叫:Increment and decrement operators 。

有时候,我们需要反复数字变量值加一或者减一。 可以使用递增(++)和递减( - )运算符来完成。

guessCount++

但是直接应用于数字是不行的,例如

3++

赋值运算符

英文是:Assignment operators 。

赋值运算符是向变量赋值的运算符。 最基本的一个就是 = 。

但是还有一些复杂的:

  • 加赋值 += 右边的数值加上左边的变量值,然后再返回新变量值。
  • 减赋值 -= 左边的变量值减去右边的值,返回新变量值。
  • 乘赋值 *= 左边的变量值乘以右边的值,返回新变量值。
  • 除赋值 \= 左边的变量值除以右边的值,返回新变量值。

比较运算符

有时,我们将要运行真/假测试,然后根据该测试的结果进行相应的操作 - 为此,我们使用比较运算符。

  • === 严格等于 测试左右值是否相同 5 === 2 + 4
  • !== 严格不等于 测试左右值是否相同 5 !== 2 + 3
  • < 小于 测试左值是否小于右值。 10 < 6
  • > 大于 测试左值是否大于右值 10 > 20
  • <= 小于或等于 测试左值是否小于或等于右值。 3 <= 2
  • >= 大于或等于 测试左值是否大于或等于正确值。 5 >= 4

Note: 您可能会看到有些人在他们的代码中使用==和!=来平等和不相等,这些都是 JavaScript 中的有效运算符,但它们与===/!==不同,前者测试值是否相同,但是数据类型可能不同,而后者的严格版本测试值和数据类型是否相同。 严格的版本往往导致更少的错误,所以我们建议您使用这些严格的版本。

参考