JavaScript - 变量
JavaScript 变量
JavaScript 变量用于存储以后可以更改的数据。这些变量可以被视为命名的容器。您可以将数据放入这些容器中,然后只需命名容器即可引用这些数据。
在 JavaScript 程序中使用变量之前,必须先声明它。在 JavaScript 中,您可以通过 4 种方式声明变量 -
let 和 const 关键字于 2015 年 (ES6) 引入到 JavaScript 中。在 ES6 之前,JavaScript 中仅使用 var 关键字来声明变量。本节我们将讨论 var 关键字。后续章节将介绍 let 和 const 关键字。
JavaScript 中的变量声明
您可以按照以下语法声明变量,而无需使用任何关键字。
<script>
Money = 10;
Name = "tutorialspoint";
</script>
此外,您还可以使用 var 关键字声明变量,如下所示。
<script> var money; var name; </script>
您还可以使用相同的 var 关键字声明多个变量,如下所示 -
<script>
var money, name;
</script>
使用赋值运算符进行变量初始化
将值存储在变量中称为变量初始化。您可以在创建变量时初始化它,也可以在稍后需要该变量时初始化它。
例如,您可以创建一个名为 money 的变量,并稍后为其赋值 2000.50。对于另一个变量,您可以在初始化时赋值,如下所示。
<script> var name = "Ali"; var money; money = 2000.50; </script>
注意: var 关键字仅用于声明或初始化,一次声明即可在文档中有效期为所有变量名的生命周期。不应重复声明同一个变量两次。
JavaScript 是无类型语言。这意味着 JavaScript 变量可以保存任何数据类型的值。与许多其他语言不同,您无需在变量声明期间告知 JavaScript 变量将保存哪种类型的值。
变量的值类型可以在程序执行过程中发生变化,JavaScript 会自动处理。
JavaScript 数据类型
在 JavaScript 中,变量可以保存动态数据类型的值。例如,您可以在 JavaScript 变量中存储数字、字符串、布尔值、对象等数据类型的值。
<script> var num = 765; // Number var str = "Welcome"; // String var bool = false; // Boolean </script>
您将在JavaScript 数据类型章节中详细学习数据类型。
JavaScript 变量名(标识符)
在 JavaScript 中,变量名使用唯一的字符序列进行命名,这些字符序列称为标识符。
以下是 JavaScript 中标识符命名的一些规则 -
有效字符 - 在 JavaScript 中,变量名可以包含数字、字母字符以及特殊字符,例如下划线 (_) 和美元符号 ($)。JavaScript 变量名不应以数字 (0-9) 开头。它们必须以字母或下划线开头。例如,123test 是无效的变量名,但 _123test 是有效的变量名。
区分大小写 − 变量名区分大小写。这意味着 Name 和 name 是不同的标识符。
Unicode 支持 − 标识符也可以包含 Unicode。因此,开发者可以使用任何语言定义变量。
保留关键字 − 不应使用任何 JavaScript 保留关键字作为变量名。例如,break 或 boolean 变量名无效。这里,我们列出了JavaScript 常用关键字的完整列表。
JavaScript 美元符号 ($) 和下划线 (_)
您可以使用 $ 和 _ 在 JavaScript 中定义变量,因为 JavaScript 引擎认为它们是有效字符。
示例(演示标识符)
在此示例中,我们使用 var 关键字定义了变量。第一个变量名以下划线开头,第二个变量名以美元符号开头。
程序员可以取消注释第三个变量声明,以检查 JavaScript 在任何标识符以数字开头时是否会产生错误。
<html>
<head>
<title> Variables in JavaScript </title>
</head>
<body>
<script>
var _abc = "Hi!";
var $abc = "Hello!";
// var 9abc = "Bye!"; // 这是无效的
document.write("_abc " + _abc + "<br>");
document.write("$abc = " + $abc + "<br>");
</script>
</body>
</html>
它产生以下结果 -
_abc Hi! $abc = Hello!
JavaScript 中的未定义变量值
如果声明变量后未初始化,则该变量包含未定义的值。但是,您也可以将未定义的值赋给该变量。
示例
我们来看下面的示例 -
<html>
<body>
<script>
var num;
document.write("The value of num is: " + num + "<br/>");
</script>
</body>
</html>
这将产生以下结果 -
The value of num is: undefined
JavaScript 变量作用域
变量的作用域是指程序中定义该变量的区域。JavaScript 变量只有两种作用域。
全局变量 − 全局变量具有全局作用域,这意味着它可以在 JavaScript 代码中的任何位置定义。
局部变量 − 局部变量仅在定义它的函数内可见。函数参数始终是该函数的局部变量。
在函数体内,局部变量优先于同名的全局变量。如果声明与全局变量同名的局部变量或函数参数,则实际上隐藏了全局变量。请看以下示例。
示例
在下面的示例中,我们在函数外部定义了名为 myVar 的变量,并使用"全局"值对其进行了初始化。此外,我们在 checkscope() 函数内部定义了具有相同标识符的变量,并使用"局部"值对其进行了初始化。
我们在函数内部打印 myVar 变量的值。因此,局部变量优先于全局变量,并在输出中打印"局部"。
<html>
<head>
<title> JavaScript Variable Scope Example</title>
</head>
<body onload = checkscope();>
<script>
var myVar = "global"; // 声明全局变量
function checkscope( ) {
var myVar = "local"; // 声明局部变量
document.write(myVar);
}
</script>
</body>
</html>
这将产生以下结果 -
local
示例
在下面的示例中,我们未使用 var 关键字来定义变量。name 变量包含字符串类型的值,而 number 变量包含浮点数据类型的值。
当我们不使用任何关键字来定义变量时,JavaScript 会将它们视为全局变量,并且可以在代码中的任何位置使用它们。
<html>
<head>
<title> Variables without var keyword </title>
</head>
<body>
<script>
name = "tutorialspoint"; // String type variable
number = 10.25; // Number type variable
document.write("name = " + name + ", number = " + number + "<br>");
</script>
</body>
</html>
这将产生以下结果 -
name = tutorialspoint, number = 10.25
此外,如果我们使用 var 关键字声明变量并赋值,然后重新声明相同的标识符而不进行初始化,标识符也不会丢失先前的值。让我们通过下面的示例来理解这一点。
示例
在下面的示例中,我们声明了 age 变量并将其初始化为 10。同样,我们声明了 age 变量,但尚未初始化它。
尽管如此,它仍然在输出中打印 10,因为它没有丢失先前的初始化值。但是,如果我们更新 age 变量的值,它会成功更新它。
<html>
<head>
<title> Variables with var keyword </title>
</head>
<body>
<script>
var age = 10;
var age;
document.write("age = " + age + "<br>");
</script>
</body>
</html>
这将产生以下结果 -
age = 10

