JavaScript 常量与变量
本章讲解 JavaScript 常量与变量,以及各种变量的用法和注意事项。
JavaScript 常量
JavaScript 暂不支持 constant关键字,不允许用户自定义常量,但是提供了几个默认常量供开发使用,这些常量主要是数学和数值常量,方便数学运算和特殊值引用。变量是存储数据值的容器。
常量 | 描述 |
---|---|
Math.E | 常量e,自然对数的底数。 |
Math.LN10 | 10的自然对数。 |
Math.LN2 | 2的自然对数。 |
Math.LOG10E | 以10为底的 e 的对数。 |
Math.LOG2E | 以2为底的 e 的对数。 |
Math.PI | 常量PI。 |
Math.SORT1_2 | 2的平方根除以1。 |
Math.SORT2 | 2的平方根。 |
Number.MAX_VALUE | 返回 JavaScript 中可能的最大数。 |
Number.MIN_VALUE | 返回 JavaScript 中可能的最小数。 |
Number.NEGATIVE_INFINITY | 表示负的无穷大(溢出返回)。 |
Number.NaN | 表示非数字值("Not-a-Number")。/td> |
Number.POSITIVE_INFINITY | 表示无穷大(溢出返回)。 |
JavaScript 变量
JavaScript 用 var 来声明变量。不支持直接使用未声明的变量。
实例
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>在本例中,x、y 以及 z 都是变量。</p>
<p id="demo">
<script>
var x = 7;
var y = 8;
var z = x + y;
document.getElementById("demo").innerHTML =
"z 的值是:" + z;
</script>
</body>
</html>
从上例中,您可获得:
- x 存储值 7
- y 存储值 8
- z 存储值 15
let 和 const的运用 (ES6)
在2015年之前,使用var关键字是声明JavaScript变量的唯一方法。
2015版JavaScript(ES6)允许使用 const 关键字定义无法重新分配的变量,let 关键字定义范围受限的变量。
因为描述这些关键字之间的区别有点复杂,而且在旧的浏览器中不支持它们,所以本教程的通常使用 var。
ES6 | |||||
---|---|---|---|---|---|
ES6 | 58 | 14 | 54 | 10 | 55 |
2017年1月 | 2016年8月 | 2017年3月 | 2016年6月 | 2018年8月 |
Safari 10 和 Edge 14 是最早全部支持 ES6 的浏览器。
类似代数
在本例中,price1、price2 以及 total 是变量:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p id="demo">
<script>
var price1 = 7;
var price2 = 8;
var price3 = 12;
var total = price1 + price2 + price3;
document.getElementById("demo").innerHTML = "总计:" + total;
</script>
</body>
</html>
在编程中,类似代数,我们使用变量(比如 price1)来存放值。
在编程中,类似代数,我们在表达式中使用变量(total = price1 + price2)。
从例子中,可以算出 total 的值是 15。
JavaScript 标识符
所有JavaScript变量必须用唯一的名称标识。
这些唯一的名称称为标识符。
标识符可以是短名称(如x和y)或更具描述性的名称(age、sum、totalVolume)。
构造变量名称(唯一标识符)的一般规则如下:
- 名称可以包含字母、数字、下划线和美元符号。
- 名字必须以字母开头
- 名称也可以以 $ 和 \ 开头(我们后面讲解这种定义方式)
- 名称区分大小写(y和y是不同的变量)
- 保留字(如JavaScript关键字)不能用作名称
提示:JavaScript 标识符区分大小写。
赋值运算符
在 JavaScript 中,等号(=)是赋值运算符,而不是判断“等于”运算符。
这一点与代数不同。下面的代码在代数中是没有意义的:
x = x + 5
然而,在JavaScript中,它非常有意义:它将x+5的值赋给x。
(它计算 x + 5 的值并将结果放入 x 中。x 的值增加5。)
注释:JavaScript 中的判断“等于”运算符是 == 。
JavaScript 数据类型
JavaScript 变量可存放数值,比如 100,以及文本值,比如 "Bill Gates"。
在编程中,文本值被称为字符串。
JavaScript 可处理多种数据类型,但是现在,我们只关注数值和字符串值。
字符串被包围在双引号或单引号中。数值不用引号。
如果把数值放在引号中,会被视作文本字符串。
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>字符串用引号包围。</p>
<p>数值不用引号包围。</p>
<p id="demo">
<script>
var pi = 3.14;
var person = "比尔盖茨";
var answer = '是的,我就是!';
document.getElementById("demo").innerHTML =
pi + "<br>" + person + "<br>" + answer;
</script>
</body>
</html>
声明(创建) JavaScript 变量
在 JavaScript 中创建变量被称为“声明”变量。您可以通过 var 关键词来声明 JavaScript 变量:
var carName;
声明之后,变量是没有值的。(技术上来讲,它的值是 undefined。)
如需赋值给变量,请使用等号:
carName = "沃尔沃";
您可以在声明变量时向它赋值:
var carName = "沃尔沃";
在上面的例子中,我们创建了名为 carName 的变量,并向其赋值 "沃尔沃"。
然后,我们在 id="demo" 的 HTML 段落中“输出”该值:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>创建一个变量,向其赋值,然后显示它:</p>
<p id="demo">
<script>
var carName = "沃尔沃";
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
提示:建议在脚本的开头声明所有变量!
一条语句,多个变量
您可以在一条语句中声明许多变量。以 var 作为语句的开头,并以逗号分隔变量:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>您可以在一条语句中声明许多变量。</p>
<p id="demo">
<script>
var person = "比尔盖茨", carName = "保时捷", price = 150000;
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
声明可横跨多行:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>您可以在一条语句中声明多个变量。</p>
<p id="demo">
<script>
var person = "比尔盖茨",
carName = "保时捷",
price = 150000;
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
Value = undefined
在计算机程序中,被声明的变量经常是不带值的。值可以是需被计算的内容,或是之后被提供的数据,比如数据输入。
不带有值的变量,它的值将是 undefined。
变量 carName 在这条语句执行后的值是 undefined:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>如果变量声明时没有赋值,那么其值是 undefined。</p>
<p id="demo">
<script>
var carName;
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
重复声明 JavaScript 变量
如果再次声明某个 JavaScript 变量,将不会丢它的值。
在这两条语句执行后,变量 carName 的值仍然是 "保时捷":
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>如果您再次声明某个 JavaScript 变量,那么它的值不会丢失。</p>
<p id="demo">
<script>
var carName = "保时捷";
var carName;
document.getElementById("demo").innerHTML = carName;
</script>
</body>
</html>
JavaScript 算术
与代数类似,您能够通过 JavaScript 变量进行算术运算,使用 = 和 + 之类的运算符:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>相加 5 + 2 + 3 的结果:</p>
<p id="demo">
<script>
var x = 3 + 5 + 8;
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
字符串也可以使用加号,但是字符串将被级联:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>相加 "比尔" + " " + "盖茨" 的结果是:</p>
<p id="demo">
<script>
var x = "比尔" + " " + "盖茨";
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
如果把要给数值放入引号中,其余数值会被视作字符串并被级联。
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 变量</h1>
<p>相加 3 + 5 + "8" 的结果是:</p>
<p id="demo">
<script>
var x = 3 + 5 + "8"
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
JavaScript 美元符号 $
请记住,JavaScript标识符(名称)必须以以下开头:
- 字母(A-Z或A-Z)
- 美元符号($)
- 或下划线(\)
由于JavaScript将美元符号视为字母,因此包含 $ 的标识符是有效的变量名:
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript $ 美元符号</h2>
<p>美元符号在JavaScript名称中被视为字母。</p>
<p id="demo"></p>
<script>
var $ = 2;
var $myMoney = 5;
document.getElementById("demo").innerHTML = $ + $myMoney;
</script>
</body>
</html>
注意:使用美元符号在JavaScript中并不常见,但是专业程序员经常将其用作JavaScript库中主函数的别名。
比如在JavaScript库jQuery中,main函数 $ 用于选择HTML元素。以jQuery$(”p”)表示“选择所有p元素”。
JavaScript 下划线
由于JavaScript将下划线视为字母,因此包含下划线的标识符是有效的变量名:
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript $</h2>
<p>The underscore is treated as a letter in JavaScript names.</p>
<p id="demo"></p>
<script>
var _x = 2;
var _100 = 5;
document.getElementById("demo").innerHTML = _x + _100;
</script>
</body>
</html>
注意:JavaScript下划线(使用下划线在JavaScript中并不常见,但专业程序员的惯例是将其用作“private(hidden)”变量的别名。