JavaScript 常量与变量

本章讲解 JavaScript 常量与变量,以及各种变量的用法和注意事项。


JavaScript 常量

JavaScript 暂不支持 constant关键字,不允许用户自定义常量,但是提供了几个默认常量供开发使用,这些常量主要是数学和数值常量,方便数学运算和特殊值引用。变量是存储数据值的容器。

常量描述
Math.E常量e,自然对数的底数。
Math.LN1010的自然对数。
Math.LN22的自然对数。
Math.LOG10E以10为底的 e 的对数。
Math.LOG2E以2为底的 e 的对数。
Math.PI常量PI。
Math.SORT1_22的平方根除以1。
Math.SORT22的平方根。
Number.MAX_VALUE返回 JavaScript 中可能的最大数。
Number.MIN_VALUE返回 JavaScript 中可能的最小数。
Number.NEGATIVE_INFINITY表示负的无穷大(溢出返回)。
Number.NaN表示非数字值("Not-a-Number")。/td>
Number.POSITIVE_INFINITY表示无穷大(溢出返回)。

JavaScript 变量

JavaScript 用 var 来声明变量。不支持直接使用未声明的变量。

实例

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>在本例中,x、y 以及 z 都是变量。</p>
  6. <p id="demo">
  7. <script>
  8. var x = 7;
  9. var y = 8;
  10. var z = x + y;
  11. document.getElementById("demo").innerHTML =
  12. "z 的值是:" + z;
  13. </script>
  14. </body>
  15. </html>

从上例中,您可获得:

  • x 存储值 7
  • y 存储值 8
  • z 存储值 15

let 和 const的运用 (ES6)

在2015年之前,使用var关键字是声明JavaScript变量的唯一方法。

2015版JavaScript(ES6)允许使用 const 关键字定义无法重新分配的变量,let 关键字定义范围受限的变量。

因为描述这些关键字之间的区别有点复杂,而且在旧的浏览器中不支持它们,所以本教程的通常使用 var。

ES6
ES65814541055
2017年1月2016年8月2017年3月2016年6月2018年8月

Safari 10 和 Edge 14 是最早全部支持 ES6 的浏览器。


类似代数

在本例中,price1、price2 以及 total 是变量:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p id="demo">
  6. <script>
  7. var price1 = 7;
  8. var price2 = 8;
  9. var price3 = 12;
  10. var total = price1 + price2 + price3;
  11. document.getElementById("demo").innerHTML = "总计:" + total;
  12. </script>
  13. </body>
  14. </html>

在编程中,类似代数,我们使用变量(比如 price1)来存放值。

在编程中,类似代数,我们在表达式中使用变量(total = price1 + price2)。

从例子中,可以算出 total 的值是 15。


JavaScript 标识符

所有JavaScript变量必须用唯一的名称标识。

这些唯一的名称称为标识符。

标识符可以是短名称(如x和y)或更具描述性的名称(age、sum、totalVolume)。

构造变量名称(唯一标识符)的一般规则如下:

  • 名称可以包含字母、数字、下划线和美元符号。
  • 名字必须以字母开头
  • 名称也可以以 $ 和 \ 开头(我们后面讲解这种定义方式)
  • 名称区分大小写(y和y是不同的变量)
  • 保留字(如JavaScript关键字)不能用作名称

提示:JavaScript 标识符区分大小写。


赋值运算符

在 JavaScript 中,等号(=)是赋值运算符,而不是判断“等于”运算符。

这一点与代数不同。下面的代码在代数中是没有意义的:

  1. x = x + 5

然而,在JavaScript中,它非常有意义:它将x+5的值赋给x。

(它计算 x + 5 的值并将结果放入 x 中。x 的值增加5。)

注释:JavaScript 中的判断“等于”运算符是 == 。


JavaScript 数据类型

JavaScript 变量可存放数值,比如 100,以及文本值,比如 "Bill Gates"。

在编程中,文本值被称为字符串。

JavaScript 可处理多种数据类型,但是现在,我们只关注数值和字符串值。

字符串被包围在双引号或单引号中。数值不用引号。

如果把数值放在引号中,会被视作文本字符串。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>字符串用引号包围。</p>
  6. <p>数值不用引号包围。</p>
  7. <p id="demo">
  8. <script>
  9. var pi = 3.14;
  10. var person = "比尔盖茨";
  11. var answer = '是的,我就是!';
  12. document.getElementById("demo").innerHTML =
  13. pi + "<br>" + person + "<br>" + answer;
  14. </script>
  15. </body>
  16. </html>

声明(创建) JavaScript 变量

在 JavaScript 中创建变量被称为“声明”变量。您可以通过 var 关键词来声明 JavaScript 变量:

  1. var carName;

声明之后,变量是没有值的。(技术上来讲,它的值是 undefined。)

如需赋值给变量,请使用等号:

  1. carName = "沃尔沃";

您可以在声明变量时向它赋值:

  1. var carName = "沃尔沃";

在上面的例子中,我们创建了名为 carName 的变量,并向其赋值 "沃尔沃"。

然后,我们在 id="demo" 的 HTML 段落中“输出”该值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>创建一个变量,向其赋值,然后显示它:</p>
  6. <p id="demo">
  7. <script>
  8. var carName = "沃尔沃";
  9. document.getElementById("demo").innerHTML = carName;
  10. </script>
  11. </body>
  12. </html>

提示:建议在脚本的开头声明所有变量!


一条语句,多个变量

您可以在一条语句中声明许多变量。以 var 作为语句的开头,并以逗号分隔变量:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>您可以在一条语句中声明许多变量。</p>
  6. <p id="demo">
  7. <script>
  8. var person = "比尔盖茨", carName = "保时捷", price = 150000;
  9. document.getElementById("demo").innerHTML = carName;
  10. </script>
  11. </body>
  12. </html>

声明可横跨多行:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>您可以在一条语句中声明多个变量。</p>
  6. <p id="demo">
  7. <script>
  8. var person = "比尔盖茨",
  9. carName = "保时捷",
  10. price = 150000;
  11. document.getElementById("demo").innerHTML = carName;
  12. </script>
  13. </body>
  14. </html>

Value = undefined

在计算机程序中,被声明的变量经常是不带值的。值可以是需被计算的内容,或是之后被提供的数据,比如数据输入。

不带有值的变量,它的值将是 undefined。

变量 carName 在这条语句执行后的值是 undefined:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>如果变量声明时没有赋值,那么其值是 undefined。</p>
  6. <p id="demo">
  7. <script>
  8. var carName;
  9. document.getElementById("demo").innerHTML = carName;
  10. </script>
  11. </body>
  12. </html>

重复声明 JavaScript 变量

如果再次声明某个 JavaScript 变量,将不会丢它的值。

在这两条语句执行后,变量 carName 的值仍然是 "保时捷":

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>如果您再次声明某个 JavaScript 变量,那么它的值不会丢失。</p>
  6. <p id="demo">
  7. <script>
  8. var carName = "保时捷";
  9. var carName;
  10. document.getElementById("demo").innerHTML = carName;
  11. </script>
  12. </body>
  13. </html>

JavaScript 算术

与代数类似,您能够通过 JavaScript 变量进行算术运算,使用 = 和 + 之类的运算符:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>相加 5 + 2 + 3 的结果:</p>
  6. <p id="demo">
  7. <script>
  8. var x = 3 + 5 + 8;
  9. document.getElementById("demo").innerHTML = x;
  10. </script>
  11. </body>
  12. </html>

字符串也可以使用加号,但是字符串将被级联:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>相加 "比尔" + " " + "盖茨" 的结果是:</p>
  6. <p id="demo">
  7. <script>
  8. var x = "比尔" + " " + "盖茨";
  9. document.getElementById("demo").innerHTML = x;
  10. </script>
  11. </body>
  12. </html>

如果把要给数值放入引号中,其余数值会被视作字符串并被级联。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 变量</h1>
  5. <p>相加 3 + 5 + "8" 的结果是:</p>
  6. <p id="demo">
  7. <script>
  8. var x = 3 + 5 + "8"
  9. document.getElementById("demo").innerHTML = x;
  10. </script>
  11. </body>
  12. </html>

JavaScript 美元符号 $

请记住,JavaScript标识符(名称)必须以以下开头:

  • 字母(A-Z或A-Z)
  • 美元符号($)
  • 或下划线(\)

由于JavaScript将美元符号视为字母,因此包含 $ 的标识符是有效的变量名:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript $ 美元符号</h2>
  5. <p>美元符号在JavaScript名称中被视为字母。</p>
  6. <p id="demo"></p>
  7. <script>
  8. var $ = 2;
  9. var $myMoney = 5;
  10. document.getElementById("demo").innerHTML = $ + $myMoney;
  11. </script>
  12. </body>
  13. </html>

注意:使用美元符号在JavaScript中并不常见,但是专业程序员经常将其用作JavaScript库中主函数的别名。

比如在JavaScript库jQuery中,main函数 $ 用于选择HTML元素。以jQuery$(”p”)表示“选择所有p元素”。


JavaScript 下划线

由于JavaScript将下划线视为字母,因此包含下划线的标识符是有效的变量名:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript $</h2>
  5. <p>The underscore is treated as a letter in JavaScript names.</p>
  6. <p id="demo"></p>
  7. <script>
  8. var _x = 2;
  9. var _100 = 5;
  10. document.getElementById("demo").innerHTML = _x + _100;
  11. </script>
  12. </body>
  13. </html>

注意:JavaScript下划线(使用下划线在JavaScript中并不常见,但专业程序员的惯例是将其用作“private(hidden)”变量的别名。