JavaScript变数


编程语言的最基本特征之一是它支持的数据类型集。这些是可以用编程语言表示和操作的值的类型。

JavaScript使你可以使用三种原始数据类型:

  • 数字(Numbers):例如 123、120.50等;

  • 字符串(Strings):例如“此文本字符串”;

  • 布尔(Boolean):例如true或false。

JavaScript还定义了两种简单的数据类型,nullundefined,每个都只定义一个值。除了这些原始数据类型外,JavaScript还支持一种复合数据类型,称为object。我们将在单独的章节中详细介绍对象。

注意:JavaScript不会区分整数值和浮点值。 JavaScript中的所有数字都表示为浮点值。 JavaScript使用IEEE 754标准定义的64位浮点格式表示数字。

JavaScript变量


像许多其他编程语言一样,JavaScript具有变量。变量可以被认为是命名容器。你可以将数据放入这些容器中,然后只需通过命名容器即可引用数据。

在JavaScript程序中使用变量之前,必须对其进行声明。变量用var关键字如下。

<script type = "text/javascript">
    <!--
        var money;
        var name;
    //->
</script>

你也可以使用相同的变量声明多个变量var关键字如下:

<script type = "text/javascript">
    <!--
        var money, name;
    //->
</script>

将值存储在变量中称为变量初始化。你可以在创建变量时或在以后需要该变量的时间点进行变量初始化。

例如,你可以创建一个名为money并在以后为其分配值2000.50。对于另一个变量,你可以在初始化时分配一个值,如下所示。

<script type = "text/javascript">
    <!--
        var name = "Ali";
        var money;
        money = 2000.50;
    //->
</script>

注意: 使用var关键字仅用于声明或初始化,一次用于文档中任何变量名称的生存期。你不应两次重复声明相同的变量。

JavaScript是无类型的语言。这意味着JavaScript变量可以保存任何数据类型的值。与许多其他语言不同,你不必在变量声明期间告诉JavaScript变量将持有哪种类型的值。变量的值类型可以在程序执行期间更改,JavaScript会自动对其进行处理。

JavaScript变量范围


变量的范围是程序在其中定义的区域。 JavaScript变量只有两个范围。

  • 全局变量:全局变量具有全局范围,这意味着可以在你的JavaScript代码中的任何位置定义它。

  • 局部变量:局部变量仅在定义它的函数中可见。函数参数始终是该函数的本地参数。

在函数体内,局部变量优先于具有相同名称的全局变量。如果声明与全局变量同名的局部变量或函数参数,则可以有效地隐藏全局变量。看下面的例子。

<html>
    <body onload = checkscope();>
        <script type = "text/javascript">
            <!--
                var myVar = "global";      //声明一个全局变量
                function checkscope( ) {
                    var myVar = "local";    //声明一个局部变量
                    document.write(myVar);
                }
            //->
        </script>
    </body>
</html>

这将产生以下结果:

local

JavaScript变量名


在JavaScript中命名变量时,请牢记以下规则。

  • 你不应将任何JavaScript保留关键字用作变量名。这些关键字将在下一节中提到。例如,break或者boolean变量名称无效。

  • JavaScript变量名称不应以数字(0-9)开头。它们必须以字母或下划线字符开头。例如,123test是无效的变量名称,但_123test是有效的。

  • JavaScript变量名称区分大小写。例如,Namename是两个不同的变量。

JavaScript保留字


下表列出了JavaScript中所有保留字的列表。它们不能用作JavaScript变量,函数,方法,循环标签或任何对象名称。

abstractelseinstanceofswitch
booleanenumintsynchronized
breakexportinterfacethis
byteextendslongthrow
casefalsenativethrows
catchfinalnewtransient
charfinallynulltrue
classfloatpackagetry
constforprivatetypeof
continuefunctionprotectedvar
debuggergotopublicvoid
defaultifreturnvolatile
deleteimplementsshortwhile
doimportstaticwith
doubleinsuper