变量

变量

在应用程序中使用变量作为值的符号名。变量名又叫做“标识符”,要符合一定规则。

一个JavaScript标识符必须以字母、下划线(_)或者美元符号($)作为首字符。随后的字符也可以是数字。因为JavaScript大小写敏感,所以字母包含“A”到“Z”(大写)和“a”到“z”(小写)。

从JavaScript 1.5开始,你可以在标识符中使用ISO 8859-1或者Unicode字母,比如“å”和“ü”。你也可以在标识符中使用转义序列页面的\uXXXX Unicode转义序列。

合格的标识符如Number_hitstemp99_name

定义变量

你可以使用两种方式来定义变量:

  • 使用关键字 var。例如, var x = 42。 这个语法可以用来声明局部和全局变量。
  • 对变量进行简单赋值。 例如, x = 42。 这常常用来声明全局变量,并生成一个严格的JavaScript警告。 你不应该使用形式。

变量求值

一个用var声明的,没有初始值的变量的值是未定义

访问一个未声明的变量,将导致引用错误的异常被抛出(ReferenceError exception)。例如:

var a;
print("The value of a is " + a); // 输出“The value of a is undefined”
print("The value of b is " + b); // 抛出ReferenceError异常

你可以使用undefined去检测一个变量是否有值。下面的代码中,变量input没有被赋值,if语句求得的值是true

var input;
if(input === undefined){
  doThis();
} else {
  doThat();
}

Not sure how the following is related to "Variables" section 作为布尔内容时,undefined的值是false。例如,下面的代码会执行myFunction,因为myArray的元素未定义的。

var myArray = new Array();
if (!myArray[0]) myFunction();

当你对null变量求值时,对于数值内容它是0,布尔内容它是false。例如:

var n = null;
print(n * 32); // 输出0

变量作用域

当你在函数的外面声明变量时,该变量叫“全局”变量,因为他在当前文件的其他代码中都可使用。当你在一个函数内部声明变量时,他叫“局部”变量,因为他只在这个函数中可用。

JavaScript没有块语句作用域;就是说,块中定义的变量也可以在块外面使用。例如,下面代码,即使conditionfalse也不会抛出异常,而是输出5:

if (condition) {
  var x = 5;
}
print(x ? x : 0);

关于JavaScript的变量,另一个不寻常的地方是,你可以使用在后面定义的变量,而不会发生异常。例如:

print(x === undefined); // 输出“true”
var x = 3;

全局变量

need links to pages discussing scope chains and the global object 全局变量实际上是“全局对象”的属性。在网页中,全局对象是window,所以你可以通过使用window.variable来访问全局变量。

因此,你可以从一个window或frame中通过window或frame名来访问在另外一个window或frame中定义的全局变量。例如,在FRAMESET文档中定义了一个变量phoneNumber,你可以通过parent.phoneNumber,从他的子frame中访问它。

See Also

Sharp variables in JavaScript

Document Tags and Contributors

Contributors to this page: alzhu, Andyyard, Cnmahj
最后编辑者: alzhu,