JScript 8.0
声明 JScript 变量和常数

JScript 程序必须指定程序将要使用的每个变量的名称。另外,此程序还可以指定每个变量将存储哪种数据类型。这两个任务都是用 var 语句完成的。

声明类型化变量和常数

在 JScript 中,可以声明变量,同时使用类型批注声明其类型。在下面的示例中,将变量 count 声明为 int(整数)类型。由于未提供初始值,count 具有默认值 int,即 0(零)。

var count : int; // An integer variable.

还可以给变量赋初始值:

var count : int = 1; // An initialized integer variable.

常数与变量的声明方式大致相同,它必须进行初始化。一旦定义了常数值,其值就不能更改。例如:

const daysInWeek : int = 7;            // An integer constant.
const favoriteDay : String = "Friday"; // A string constant.
const maxDaysInMonth : int = 31, maxMonthsInYear : int = 12

当然,在声明特定类型的变量时,所赋的值必须对该类型是有意义的。例如,将一个字符字符串值赋给整数变量就是没有意义的。这样做时,程序会引发 TypeError 异常,指示在代码中存在类型不匹配。TypeError 是一种可出现在运行脚本中的异常或错误。catch 块可以捕获 JScript 程序引发的异常。有关更多信息,请参见 try...catch...finally 语句

虽然将每个声明放在单独一行时阅读代码更为方便,但也可以同时声明多个变量的类型和初始值。例如,此代码段读起来就很费劲:

var count : int = 1; amount : int = 12, level : double = 5346.9009 

下面的代码段读起来更为轻松:

var count : int = 1;
var amount : int = 12;
var level : double = 5346.9009;

在一行上声明若干个变量时还要记住,类型批注只应用于它前面紧邻的变量。在下面的代码中,x 是一个 Object,因为它是默认的类型,并且 x 未指定值,而 y 是一个 int

var x, y : int;

声明非类型化变量和常数

并非一定要使用类型化变量,但使用非类型化变量的程序运行更慢,并且容易出错。

下面的简单示例声明了一个名为 count 的变量。

var count;  // Declare a single declaration.

在没有指定数据类型的情况下,变量或常数的默认类型为 Object。在没有赋值的情况下,变量的默认值为 undefined。下面的代码说明了一个命令行程序的这些默认设置:

var count; // Declare a single declaration using default type and value.
print(count); //Print the value of count.
print(typeof(count)); // Prints undefined.

可以为变量分配初始值但不声明类型:

var count = 1; // An initialized variable.

下面的示例使用单个 var 语句声明了若干个变量:

var count, amount, level;  // multiple declarations with a single var keyword.

若要在不分配特定值的情况下声明一个变量并对其进行初始化,请为其分配 JScript 值 null。这是一个示例。

var bestAge = null;

存在已声明但没有分配值的变量,但它具有 JScript 值 undefined。这是一个示例。

var currentCount;
var finalCount = 1 * currentCount; // finalCount has the value NaN since currentCount is undefined.

在 JScript 中,nullundefined 之间的主要差异在于:null 转换为零(尽管它不是零),而 undefined 转换为特殊值 NaN(不是一个数字)。有趣的是,在使用相等运算符 (==) 时,null 值和 undefined 值的比较结果总是相等。

声明非类型化常数的过程与声明变量的过程很类似,但必须为非类型化常数提供初始值。例如:

const daysInWeek  = 7;
const favoriteDay  = "Friday";
const maxDaysInMonth  = 31, maxMonthsInYear = 12

不用 var 声明变量

可以在声明中不使用 var 关键字并分配一个值来声明变量。这就是所谓的隐式声明,但不建议这样做。隐式声明用分配的名称创建一个全局对象的属性;该属性很像一个具有全局范围可见性的变量。当您在过程级别声明变量时,通常不希望它在全局范围内可见。在这种情况下,必须在变量声明中使用 var 关键字。

noStringAtAll = ""; // The variable noStringAtAll is declared implicitly.

不能使用从未声明过的变量。

var volume = length * width; // Error - length and width do not yet exist.
Note注意

不用 var 关键字声明变量将在运行于快速模式(JScript 的默认模式)下时生成编译时错误。若要从不使用 var 关键字的命令行编译程序,则必须使用 /fast- 关闭快速选项。由于线程处理问题,在 ASP.NET 中关闭快速选项是不安全的。

请参见