<script>第二行和第四行的作用,是让不懂<script>标记的浏览器忽略 JavaScript 代码。一般可以省略,因为现在想找不懂 Script 的浏览器,恐怕就连博物馆里也没有了。第四行前边的双反斜杠“//”是 JavaScript 里的注释标号,以后将学到。
<!--
...
(JavaScript代码)
...
//-->
</script>
javascript:<JavaScript语句>这样的格式也可以用在连接中:
<a href="javascript:<JavaScript语句>">...</a>JavaScript 基本语法每一句 JavaScript 都有类似于以下的格式:
<语句>;其中分号“;”是 JavaScript 语言作为一个语句结束的标识符。虽然现在很多浏览器都允许用回车充当结束符号,培养用分号作结束的习惯仍然是很好的。
只包含字母、数字和/或下划线;而且,变量是区分大小写的,例如,variable 和 Variable 是两个不同的变量。不仅如此,大部分命令和“对象”(请参阅“对象化编程”章)都是区分大小写的。
要以字母开头;
不能太长(其实有什么人喜欢使用又长又臭的名字呢?);
不能与 JavaScript 保留字(Key Words,Reserved Words,数量繁多,不能一一列出;凡是可以用来做 JavaScript 命令的字都是保留字)重复。
整型 只能储存整数。可以是正整数、0、负整数,可以是十进制、八进制、十六进制。八进制数的表示方法是在数字前加“0”,如“0123”表示八进制数“123”。十六进制则是加“0x”:“0xEF”表示十六进制数“EF”。由于 JavaScript 对数据类型的要求不严格,一般来说,声明变量的时候不需要声明类型。而且就算声明了类型,在过程中还可以给变量赋予其他类型的值。声明类型可以用赋予初始值的方法做到:
浮点型 即“实型”,能储存小数。有资料显示,某些平台对浮点型变量的支持不稳定。没有需要就不要用浮点型。
字符串型 是用引号“" "”、“' '”包起来的零个至多个字符。用单引号还是双引号由你决定。跟语文一样,用哪个引号开始就用哪个结束,而且单双引号可嵌套使用:'这里是"JavaScript 教程"。' 不过跟语文不同的是,JavaScript 中引号的嵌套只能有一层。如果想再多嵌一些,你需要转义字符:
转义字符 由于一些字符在屏幕上不能显示,或者 JavaScript 语法上已经有了特殊用途,在要用这些字符时,就要使用“转义字符”。转义字符用斜杠“\”开头:\' 单引号、\" 双引号、\n 换行符、\r 回车(以上只列出常用的转义字符)。于是,使用转义字符,就可以做到引号多重嵌套:'Micro 说:"这里是\"JavaScript 教程\"。" '
布尔型 常用于判断,只有两个值可选:true(表“真”)和 false(表“假”)。true 和 false 是 JavaScript 的保留字。它们属于“常数”。
对象 关于对象,在“对象化编程”一章将详细讲到。
var aString = '';这将把 aString 定义为具有空值的字符串型变量。
var anInteger = 0;这将把 anInteger 定义为值为 0 的整型。
<变量> = <表达式>;其中“=”叫“赋值符”,它的作用是把右边的值赋给左边的变量。下一节将讨论到表达式。
null 一个特殊的空值。当变量未定义,或者定义之后没有对其进行任何赋值操作,它的值就是“null”。企图返回一个不存在的对象时也会出现null值。在 Math 对象中还有一系列数学常数。这将在讨论“对象化编程”时谈到。
NaN “Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。
true 布尔值“真”。用通俗的说法,“对”。
false 布尔值“假”。用通俗的说法,“错”。
| 括号 | (x) [x] | 中括号只用于指明数组的下标 |
| 求反、 自加、 自减 | -x | 返回 x 的相反数 |
| !x | 返回与 x (布尔值)相反的布尔值 | |
| x++ | x 值加 1,但仍返回原来的 x 值 | |
| x-- | x 值减 1,但仍返回原来的 x 值 | |
| ++x | x 值加 1,返回后来的 x 值 | |
| --x | x 值减 1,返回后来的 x 值 | |
| 乘、除 | x*y | 返回 x 乘以 y 的值 |
| x/y | 返回 x 除以 y 的值 | |
| x%y | 返回 x 与 y 的模(x 除以y 的余数) | |
| 加、减 | x+y | 返回 x 加 y 的值 |
| x-y | 返回 x 减 y 的值 | |
| 关系运算 | x<y x<=y x>=y x>y | 当符合条件时返回 true 值,否则返回 false 值 |
| 等于、 不等于 | x==y | 当 x 等于 y 时返回 true 值,否则返回 false 值 |
| x!=y | 当 x 不等于 y 时返回 true 值,否则返回 false 值 | |
| 位与 | x&y | 当两个数位同时为 1 时,返回的数据的当前数位为 1,其他情况都为 0 |
| 位异或 | x^y | 两个数位中有且只有一个为 0 时,返回 0,否则返回 1 |
| 位或 | x|y | 两个数位中只要有一个为 1,则返回 1;当两个数位都为零时才返回零 |
| 位运算符通常会被当作逻辑运算符来使用。它的实际运算情况是:把两个操作数(即 x 和 y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。由于“真”值在电脑内部(通常)是全部数位都是 1 的二进制数,而“假”值则是全部是 0 的二进制数,所以位运算符也可以充当逻辑运算符。 | ||
| 逻辑与 | x&&y | 当 x 和 y 同时为 true 时返回 true,否则返回 false |
| 逻辑或 | x||y | 当 x 和 y 任意一个为 true 时返回 true,当两者同时为 false 时返回 false |
| 逻辑与/或有时候被称为“快速与/或”。这是因为当第一操作数(x)已经可以决定结果,它们将不去理会 y 的值。例如,false && y,因为x == false,不管 y 的值是什么,结果始终是 false,于是本表达式立即返回 false,而不论 y 是多少,甚至 y 可以导致出错,程序也可以照样运行下去。 | ||
| 条件 | c?x:y | 当条件 c 为 true 时返回 x 的值(执行 x 语句),否则返回 y 的值(执行 y 语句) |
| 赋值、 复合运算 | x=y | 把 y 的值赋给 x,返回所赋的值 |
| x+=y x-=y x*=y x/=y x%=y | x 与 y 相加/减/乘/除/求余,所得结果赋给 x,并返回 x 赋值后的值 | |
if ( <条件> ) <语句1> [ else <语句2> ];本语句有点象条件表达式“?:”:当<条件>为真时执行<语句1>,否则,如果 else 部分存在的话,就执行<语句2>。与“?:”不同的是,if 只是一条语句,不会返回数值。<条件>是布尔值,必须用小括号括起来;<语句1>和<语句2>都只能是一个语句,欲使用多条语句,请用语句块。
if (a == 1)本代码企图用缩进的方法说明 else 是对应 if (a == 1) 的,但是实际上,由于 else 与 if (b == 0) 最相近,本代码不能按作者的想法运行。正确的代码是
if (b == 0) alert(a+b);
else
alert(a-b);
if (a == 1) {提示 一行代码太长,或者涉及到比较复杂的嵌套,可以考虑用多行文本,如上例,if (a == 1) 后面没有立即写上语句,而是换一行再继续写。浏览器不会混淆的,当它们读完一行,发现是一句未完成语句,它们会继续往下读。使用缩进也是很好的习惯,当一些语句与上面的一两句语句有从属关系时,使用缩进能使程序更易读,方便程序员进行编写或修改工作。
if (b == 0) alert(a+b);
} else {
alert(a-b);
}
for (<变量>=<初始值>; <循环条件>; <变量累加方法>) <语句>;本语句的作用是重复执行<语句>,直到<循环条件>为 false 为止。它是这样运作的:首先给<变量>赋<初始值>,然后*判断<循环条件>(应该是一个关于<变量>的条件表达式)是否成立,如果成立就执行<语句>,然后按<变量累加方法>对<变量>作累加,回到“*”处重复,如果不成立就退出循环。这叫做“for循环”。下面看看例子。
for (i = 1; i < 10; i++) document.write(i);本语句先给 i 赋初始值 1,然后执行 document.write(i)语句(作用是在文档中写 i 的值,请参越“对象化编程”一章);重复时 i++,也就是把 i 加 1;循环直到 i<10 不满足,也就是 i>=10 时结束。结果是在文档中输出了“123456789”。
while (<循环条件>) <语句>;比 for 循环简单,while 循环的作用是当满足<循环条件>时执行<语句>。while 循环的累加性质没有 for 循环强。<语句>也只能是一条语句,但是一般情况下都使用语句块,因为除了要重复执行某些语句之外,还需要一些能变动<循环条件>所涉及的变量的值的语句,否则一但踏入此循环,就会因为条件总是满足而一直困在循环里面,不能出来。这种情况,我们习惯称之为“死循环”。死循环会弄停当时正在运行的代码、正在下载的文档,和占用很大的内存,很可能造成死机,应该尽最大的努力避免。
break;本语句放在循环体内,作用是立即跳出循环。
continue;本语句放在循环体内,作用是中止本次循环,并执行下一次循环。如果循环的条件已经不符合,就跳出循环。