标题: [转载教程] JS基础知识——变量 [打印本页]
作者: wc726842270 时间: 2011-6-21 21:10 标题: JS基础知识——变量
变量其实就是保存值的容器,这些值将在脚本中被使用或者被改变.事实上,每个脚本都使用变量来存储和操作数据,就算只有少许JavaScript经验的人也可以正确地使用它。
变量名称
JavaScript变量名称必须由字母,数字,下划线和美元符号组成。第一个字符不能是数字。记住JavaScript是大小写敏感的,即变量test不同于变量Test。
JavaScript在开发中习惯以驼峰命名格式拼写较长的变量或函数名,因为这样更容易阅读。名字以一个小写字母开头,但是每个新单词开头时,使用大写字母。例如三明治拾取器,就使用变量currentPrice,而不是currentprice或current_price。
W3C DOM使用相同的命名约定,例如getElementById或createElement。如果你使用相同的规则给你的变量命名,你将会很快适应这种命名约定,并且名称内部的大写字母减少了你出错的机会。- 保留字
- 你不能使用以下单词作为变量或函数的名称,因为它们在JavaScript中别有意义:
- 以下的单词为JavaScript将来的扩展而保留,比如即将到来的2.0版本:
- abstract,boolean,byte,char,class,const,debugger,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile.
- 在写这本书的时候,如果你使用上面的保留字作为变量或函数的名称,Mozilla和Safari会报错,而Explorer和Opera而允许使用它们。
复制代码
关键字var
当我第一次用到一个新变量的时候,我会在它的名字前加上关键字var。这是一个显式的变量声明,我将花一点时间和耐心来解释我正在声明一个新变量。
你可以不指定一个值给新变量:
var x;
现在你已经显式地声明了变量x,但你还没有给它赋值,就像我们在以前看到的一样,此时它有一个特别的值undefined.这是允许的,但是最好尽快给它赋值,因为一般来说你并不希望undefined值来开头乱你的脚本。
隐性变量声明
var关键字不是必须的。如果你在程序中开始使用一个还没有声明的变量,JavaScript会没有怨言地去创建它,这被称为隐性变量声明。一个隐性性明的变量总是具有全局作用域。
以下的两个例子都是正确的JavaScript:
var x = 10;
var a = x * 2;
alert(a);
// b还从来没有被用过
b = x * 2;
alert(b);
我没有使用var去声明变量b,但因为我赋了一个值给它,JavaScript会自动创建它。虽然如此,显式地声时变量能让你的脚本保持清晰,并且能避免作用域的问题,所以我建议你尽量使用它。
变量作用域
每个变量都有一个作用域,即变量在这么一个区域中可以被识别,而出了此区域它就没有任何作用了。作用域有两种;全局作用域和局部作用域。
全局变量在JavaScript代码中处处都有定义(或者更准确地说,它贯穿在一个全局对象中)并可以在任何地方使用。局部变量则只在一个函数中有定义。- 无块级作用域
- 注意,JavaScript没有块级作用域,这一点与C++和Java不同。任何局部变量在定义它的整个函数体中都能被识别。
复制代码
使用局部变量
优秀的编程实践是尽可能地使用局部变量。这样可以防止变量之间相互干扰,即使它们具有相同的名字。
例如,在“三明治拾取器”中,我使用变量price保存用户订购的所有三明治的总价。毕竟用这样一个变量名去保存价格是非常直观的,并且其他程序员将会立即明白它的意思。
如果我有更多用于计算价格的函数,我可能也希望在那里使用price,可是,如果price是一个全局变量,好几个函数都可能改变它的值。结果就是price可能得到一个无法预料的值而导致我的计算发生错误。
最安全的方式就是为每个用于计算价格的函数都创建一个局部变量price。每个函数将并不知道其他函数中的price变量,这样也就没有了冲突的危险。
定义局部变量
你该如何定义局部变量呢?有这两种方式;
++你可以在函数体中使用var关键字显式声明它们;
++你可在定义函数的时候,将它们声明为参数。
其他任何方式声明的变量都是全局变量
在下面这例子中,message是一个局部变量,因为它是在函数体的内部定义的:
function doSomething() {
var message = 'Error!';
alert(message);
}
在这个例子中,它成为一个全局变量,它是在函数外部定义的
var message = 'Error!';
function doSomething() {
alert(message);
}
在这个例子中,它还是一个全局变量。它在函数体中使用,但是没有用var关键字来声明;
function doSomething() {
message = 'Error!';
alert(message);
}
最后,在这里,它再次成为一个局部变量,因为它是一个函数的参数;
doSomething('Error');
function doSomething(message) {
alert(message);
}
作者: 秋千道 时间: 2011-8-2 17:06
呵呵,这个不错哦~
楼主,怎么不把教程继续发下去
作者: wc726842270 时间: 2011-8-3 17:02
多谢你的支持,关键是最近的2个月没有什么时间,除了上班的12个小时,也就能看看书了,连上网吧的机会都没有,不过想学的话,百度才是关键,
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |