<strong>在什么地方插入 JavaScript<br></strong> JavaScript 可以出现在 HTML 的任意地方。使用标记<script>…</script>,你可以在 HTML 文档的任意地方插入 JavaScript,甚至在<HTML>之前插入也不成问题。不过如果要在声明框架的网页(框架网页)中插入,就一定要在<frameset>之前插入,否则不会运行。<br>基本格式 <div class="blockcode"><font face="NSimsun"><code id="code0"><script><br><!--<BR>...<BR>(JavaScript代码)<BR>...<BR>//--><br></script></code><br></font></div>두 번째와 네 번째 줄의 목적은 <script> 태그를 이해하지 못하는 브라우저가 JavaScript 코드를 무시하도록 하는 것입니다. 일반적으로 생략할 수 있습니다. 왜냐하면 이제 스크립트를 이해하지 못하는 브라우저를 찾으려면 박물관에도 아무도 없을 것이기 때문입니다. 네 번째 줄 앞의 이중 백슬래시 "//"는 JavaScript의 주석 표시로 나중에 배우게 됩니다. <br><br>JavaScript를 삽입하는 또 다른 방법은 JavaScript 코드를 다른 파일(이 파일은 일반적으로 ".js" 확장자를 가져야 함)에 작성한 다음 "<script src=" javascript.js " 형식을 사용하는 것입니다. ></script>" 태그는 이를 문서에 삽입합니다. "</script>"로 표시해야 합니다. <br>참조 <script> 태그에는 스크립트에서 사용되는 언어를 설명하는 언어(lang으로 약칭) 속성도 있습니다. JavaScript의 경우 "언어="JavaScript""를 사용하세요. <br>참고자료 <script> 태그와 비교하여 <server> 태그도 있습니다. <server> 태그에는 서버측 스크립트가 포함되어 있습니다. 이 튜토리얼에서는 클라이언트측 JavaScript, 즉 <script> 태그에 포함된 스크립트에 대해서만 설명합니다. <br>브라우저의 "주소" 표시줄에서 JavaScript 문을 실행하려면 다음 형식을 사용하세요. <br>javascript:<JavaScript 문><br>이 형식은 연결에서도 사용할 수 있습니다. <br> < ;a href="javascript:<JavaScript 문>">...</a><br><br><strong>JavaScript의 기본 구문</strong><br>각 JavaScript 문장은 다음과 같습니다. 형식: <br><Statement><br>여기서 세미콜론 ";"은 명령문을 끝내는 JavaScript 언어 식별자입니다. 현재 많은 브라우저에서는 닫는 기호로 캐리지 리턴을 허용하지만 세미콜론으로 끝나는 습관을 기르는 것은 여전히 좋은 습관입니다. <br>명령문 블록 명령문 블록은 중괄호 "{ }"로 묶인 하나 또는 n개의 명령문입니다. 중괄호 안에는 여러 개의 명령문이 있지만 중괄호 외부에 있는 명령문 블록은 하나의 명령문으로 처리됩니다. 명령문 블록은 중첩될 수 있습니다. 즉, 명령문 블록은 하나 이상의 명령문 블록을 포함할 수 있습니다. 변수 이름 지정에는 다음 요구 사항이 있습니다. <br> 문자, 숫자 및/또는 밑줄만 포함해야 합니다. <strong>은 문자로 시작해야 합니다. </strong>은 너무 길면 안 됩니다. long을 사용하고 냄새 나는 이름은 어떻습니까?); <br>는 JavaScript 예약어(핵심 단어, 예약어, 하나씩 나열하기에는 너무 많습니다. JavaScript 명령을 만드는 데 사용할 수 있는 단어는 모두 예약되어 있습니다)와 함께 사용할 수 없습니다. 단어). <br>또한 변수는 대소문자를 구분합니다. 예를 들어 변수와 변수는 서로 다른 두 변수입니다. 그뿐만 아니라 대부분의 명령과 "객체"("객체 기반 프로그래밍" 장 참조)는 대소문자를 구분합니다. <br>Tip 변수 이름을 지정할 때 "a", "b", "c" 등의 단일 문자를 사용하는 것을 피하고 대신 프로그램에서 변수의 역할을 명확하게 표현할 수 있는 단어를 사용하는 것이 가장 좋습니다. 이렇게 하면 다른 사람들이 여러분의 프로그램을 더 쉽게 이해할 수 있을 뿐만 아니라, 나중에 프로그램을 수정할 때 변수의 역할을 빨리 기억할 수도 있습니다. 변수 이름은 일반적으로 소문자를 사용합니다. 여러 단어로 구성된 경우 첫 번째 단어에는 소문자를 사용하고 다른 단어의 첫 글자에는 대문자를 사용합니다. 예: myVariable 및 myAnotherVariable. 이는 단지 아름다움과 가독성을 위해 수행된 것입니다. 왜냐하면 일부 JavaScript 명령("command"라는 단어는 나중에 보다 구체적인 방식으로 설명될 것임)이 charAt 등의 방식으로 이름이 지정되기 때문입니다. <br>변수는 선언되어야 합니다. 선언되지 않은 변수는 사용할 수 없습니다. 그렇지 않으면 "정의되지 않음"이라는 오류가 발생합니다. 변수를 선언하려면 다음을 사용할 수 있습니다. <br><br>var <Variable> [= <Value>];<br><br>var 처음 접하는 키워드(즉, 예약어) ). 이 키워드는 변수를 선언하는 데 사용됩니다. 가장 간단한 선언 방법은 "var <Variable>"로, <Variable>에 대한 메모리를 준비하고 초기 값 "null"을 할당합니다. "= <value>"가 추가되면 <variable>에 사용자 정의 초기 값 <value>이 할당됩니다. <br><br>데이터 유형 변수가 사용할 수 있는 데이터 유형은 다음과 같습니다. <br>정수 유형은 정수만 저장할 수 있습니다. 양의 정수, 0, 음의 정수, 10진수, 8진수 또는 16진수가 될 수 있습니다. 8진수는 숫자 앞에 "0"을 붙여 표시합니다. 예를 들어 "0123"은 8진수 "123"을 나타냅니다. 16진수의 경우 "0x"를 추가합니다. "0xEF"는 16진수 "EF"를 나타냅니다.<br>浮点型 即“实型”,能储存小数。有资料显示,某些平台对浮点型变量的支持不稳定。没有需要就不要用浮点型。<br>字符串型 是用引号“" "”、“' '”包起来的零个至多个字符。用单引号还是双引号由你决定。跟语文一样,用哪个引号开始就用哪个结束,而且单双引号可嵌套使用:'这里是"JavaScript 教程"。' 不过跟语文不同的是,JavaScript 中引号的嵌套只能有一层。如果想再多嵌一些,你需要转义字符:<br> 转义字符 由于一些字符在屏幕上不能显示,或者 JavaScript 语法上已经有了特殊用途,在要用这些字符时,就要使用“转义字符”。转义字符用斜杠“”开头:\' 单引号、\" 双引号、 换行符、 回车(以上只列出常用的转义字符)。于是,使用转义字符,就可以做到引号多重嵌套:'Micro 说:"这里是\"JavaScript 教程\"。" '<br>布尔型 常用于判断,只有两个值可选:true(表“真”)和 false(表“假”)。true 和 false 是 JavaScript 的保留字。它们属于“常数”。<br>对象 关于对象,在“对象化编程”一章将详细讲到。<br>由于 JavaScript 对数据类型的要求不严格,一般来说,声明变量的时候不需要声明类型。而且就算声明了类型,在过程中还可以给变量赋予其他类型的值。声明类型可以用赋予初始值的方法做到: <div class="blockcode"><font face="NSimsun"><code id="code1">var aString = '';</code><br></font></div>这将把 aString 定义为具有空值的字符串型变量。 <div class="blockcode"><font face="NSimsun"><code id="code2">var anInteger = 0;</code><br></font></div>这将把 anInteger 定义为值为 0 的整型。<br>变量的赋值 一个变量声明后,可以在任何时候对其赋值。赋值的语法是:<br><变量> = <表达式>;<br>其中“=”叫“赋值符”,它的作用是把右边的值赋给左边的变量。下一节将讨论到表达式。 <br><br>JavaScript常数 有下列几个:<br><br>null 一个特殊的空值。当变量未定义,或者定义之后没有对其进行任何赋值操作,它的值就是“null”。企图返回一个不存在的对象时也会出现null值。<br>NaN “Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。<br>true 布尔值“真”。用通俗的说法,“对”。<br>false 布尔值“假”。用通俗的说法,“错”。<br><br>在 Math 对象中还有一系列数学常数。这将在讨论“对象化编程”时谈到。<br><br><strong>表达式与运算符</strong><br>表达式 与数学中的定义相似,表达式是指具有一定的值的、用运算符把常数和变量连接起来的代数式。一个表达式可以只包含一个常数或一个变量。运算符可以是四则运算符、关系运算符、位运算符、逻辑运算符、复合运算符。下表将这些运算符从高优先级到低优先级排列:<br> <table class="t_table" style="WIDTH: 0px" cellspacing="0"> <tbody> <tr> <td width="60">括号</td> <td width="120">(x) [x]</td> <td width="400">中括号只用于指明<strong>数组</strong>的<strong>下标</strong> </td> </tr> <tr> <td rowspan="6">求反、自加、自减</td> <td>-x</td> <td>返回 x 的相反数</td> </tr> <tr> <td>!x</td> <td>返回与 x (布尔值)相反的布尔值</td> </tr> <tr> <td>x++</td> <td>x 值加 1,但仍返回原来的 x 值</td> </tr> <tr> <td>x--</td> <td>x 值减 1,但仍返回原来的 x 值 </td> </tr> <tr> <td>++x</td> <td>x 值加 1,返回后来的 x 值</td> </tr> <tr> <td>--x</td> <td>x 值减 1,返回后来的 x 值</td> </tr> <tr> <td rowspan="3">乘、除</td> <td>x*y</td> <td>返回 x 乘以 y 的值</td> </tr> <tr> <td>x/y</td> <td>返回 x 除以 y 的值</td> </tr> <tr> <td>x%y</td> <td>返回 x 与 y 的模(x 除以y 的余数)</td> </tr> <tr> <td rowspan="2">加、减</td> <td>x+y</td> <td>返回 x 加 y 的值</td> </tr> <tr> <td>x-y</td> <td>返回 x 减 y 的值</td> </tr> <tr> <td>关系运算</td> <td>x<y x<=y<BR>x>=y x>y</td> <td>当符合条件时返回 true 值,否则返回 false 值</td> </tr> <tr> <td rowspan="2">等于、<br>不等于</td> <td>x==y</td> <td>当 x 等于 y 时返回 true 值,否则返回 false 值</td> </tr> <tr> <td>x!=y</td> <td>当 x 不等于 y 时返回 true 值,否则返回 false 值</td> </tr> <tr> <td>位与</td> <td>x&y</td> <td>当两个数位同时为 1 时,返回的数据的当前数位为 1,其他情况都为 0</td> </tr> <tr> <td>位异或</td> <td>x^y</td> <td>两个数位中有且只有一个为 0 时,返回 0,否则返回 1</td> </tr> <tr> <td>位或</td> <td>x|y</td> <td>两个数位中只要有一个为 1,则返回 1;当两个数位都为零时才返回零</td> </tr> <tr> <td colspan="3">位运算符通常会被当作逻辑运算符来使用。它的实际运算情况是:把两个操作数(即 x 和 y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。由于“真”值在电脑内部(通常)是全部数位都是 1 的二进制数,而“假”值则是全部是 0 的二进制数,所以位运算符也可以充当逻辑运算符。</td> </tr> <tr> <td>逻辑与</td> <td>x&&y</td> <td>当 x 和 y 同时为 true 时返回 true,否则返回 false</td> </tr> <tr> <td>逻辑或</td> <td>x||y</td> <td>当 x 和 y 任意一个为 true 时返回 true,当两者同时为 false 时返回 false</td> </tr> <tr> <td colspan="3">逻辑与/或有时候被称为“快速与/或”。这是因为当第一操作数(x)已经可以决定结果,它们将不去理会 y 的值。例如,false && y,因为x == false,不管 y 的值是什么,结果始终是 false,于是本表达式立即返回 false,而不论 y 是多少,甚至 y 可以导致出错,程序也可以照样运行下去。 </td> </tr> <tr> <td>条件</td> <td>c?x:y</td> <td>当条件 c 为 true 时返回 x 的值(执行 x 语句),否则返回 y 的值(执行 y 语句)</td> </tr> <tr> <td rowspan="2">赋值、<br>复合运算</td> <td>x=y</td> <td>把 y 的值赋给 x,返回所赋的值</td> </tr> <tr> <td>x+=y x-=y x*=y<br>x/=y x%=y</td> <td>x 与 y 相加/减/乘/除/求余,所得结果赋给 x,并返回 x 赋值后</td> </tr> </tbody> </table> <br><br><i>注意</i> 所有与四则运算有关的运算符都不能作用在字符串型变量上。字符串可以使用 +、+= 作为连接两个字符串之用。<br><br><i>提示</i> 请密切注意运算的优先级。编程时如果不记得运算符的优先级,可以使用括号( )。例如:(a == 0)||(b == 0)。<br><br>一些用来赋值的表达式,由于有返回的值,可以加以利用。例如,用以下语句:a = b = c = 10,可以一次对三个变量赋值。<br><br><strong>语句</strong><br>下面将开始讨论 JavaScript 基本编程命令,或者叫“语句”。<br><br><i>注释</i><br><br>像其他所有语言一样,JavaScript 的注释在运行时也是被忽略的。注释只给程序员提供消息。<br><br>JavaScript 注释有两种:单行注释和多行注释。单行注释用双反斜杠“//”表示。当一行代码有“//”,那么,“//”后面的部分将被忽略。而多行注释是用“/*”和“*/”括起来的一行到多行文字。程序执行到“/*”处,将忽略以后的所有文字,直到出现“*/”为止。<br><br>提示 如果你的程序需要草稿,或者需要让别人阅读,注释能帮上大忙。养成写注释的习惯,能节省你和其他程序员的宝贵时间,使他们不用花费多余的时间琢磨你的程序。在程序调试的时候,有时需要把一段代码换成另一段,或者暂时不要一段代码。这时最忌用 Delete 键,如果想要回那段代码怎么办?最好还是用注释,把暂时不要的代码“隐”去,到确定方法以后再删除也不迟。<br><br><i>if 语句</i> <div class="blockcode"><font face="NSimsun"><code id="code3">if ( <条件> ) <语句1> [ else <语句2> ];</code><br></font></div>本语句有点象条件表达式“?:”:当<条件>为真时执行<语句1>,否则,如果 else 部分存在的话,就执行<语句2>。与“?:”不同的是,if 只是一条语句,不会返回数值。<条件>是布尔值,必须用小括号括起来;<语句1>和<语句2>都只能是一个语句,欲使用多条语句,请用语句块。<br><br>注意 请看下例: <div class="blockcode"><font face="NSimsun"><code id="code4">if (a == 1)<br> if (b == 0) alert(a+b);<br>else<br> alert(a-b);</code><br></font></div>本代码企图用缩进的方法说明 else 是对应 if (a == 1) 的,但是实际上,由于 else 与 if (b == 0) 最相近,本代码不能按作者的想法运行。正确的代码是 <div class="blockcode"><font face="NSimsun"><code id="code5">if (a == 1) {<br> if (b == 0) alert(a+b);<br>} else {<br> alert(a-b);<br>}</code><br></font></div> <i>提示</i> 一行代码太长,或者涉及到比较复杂的嵌套,可以考虑用多行文本,如上例,if (a == 1) 后面没有立即写上语句,而是换一行再继续写。浏览器不会混淆的,当它们读完一行,发现是一句未完成语句,它们会继续往下读。使用缩进也是很好的习惯,当一些语句与上面的一两句语句有从属关系时,使用缩进能使程序更易读,方便程序员进行编写或修改工作。<br><br><i>循环体</i> <div class="blockcode"><font face="NSimsun"><code id="code6">for (<变量>=<初始值>; <循环条件>; <变量累加方法>) <语句>;</code><br></font></div>本语句的作用是重复执行<语句>,直到<循环条件>为 false 为止。它是这样运作的:首先给<变量>赋<初始值>,然后*判断<循环条件>(应该是一个关于<变量>的条件表达式)是否成立,如果成立就执行<语句>,然后按<变量累加方法>对<变量>作累加,回到“*”处重复,如果不成立就退出循环。这叫做“for循环”。下面看看例子。 <div class="blockcode"><font face="NSimsun"><code id="code7">for (i = 1; i < 10; i++) document.write(i);</CODE><BR></FONT></DIV>本语句先给 i 赋初始值 1,然后执行 document.write(i)语句(作用是在文档中写 i 的值,请参越“对象化编程”一章);重复时 i++,也就是把 i 加 1;循环直到 i<10 不满足,也就是 i>=10 时结束。结果是在文档中输出了“123456789”。<br><br>和 if 语句一样,<语句>只能是一行语句,如果想用多条语句,你需要用语句块。<br><br>与其他语言不同,JavaScript 的 for 循环没有规定循环变量每次循环一定要加一或减一,<变量累加方法>可以是任意的赋值表达式,如 i+=3、i*=2、i-=j 等都成立。<br><br>提示 适当的使用 for 循环,能使 HTML 文档中大量的有规律重复的部分简化,也就是用 for 循环重复写一些 HTML 代码,达到提高网页下载速度的目的。不过请在 Netscape 中重复进行严格测试,保证通过了才好把网页传上去。作者曾试过多次因为用 for 循环向文档重复写 HTML 代码而导致 Netscape“猝死”。IE 中绝对没有这种事情发生,如果你的网也是只给 IE 看的,用多多的 for 也没问题。<br><br><i>除了 for 循环,JavaScript 还提供 while 循环。</i> <div class="blockcode"><font face="NSimsun"><code id="code8">while (<循环条件>) <语句>;</code><br></font></div>比 for 循环简单,while 循环的作用是当满足<循环条件>时执行<语句>。while 循环的累加性质没有 for 循环强。<语句>也只能是一条语句,但是一般情况下都使用语句块,因为除了要重复执行某些语句之外,还需要一些能变动<循环条件>所涉及的变量的值的语句,否则一但踏入此循环,就会因为条件总是满足而一直困在循环里面,不能出来。这种情况,我们习惯称之为“死循环”。死循环会弄停当时正在运行的代码、正在下载的文档,和占用很大的内存,很可能造成死机,应该尽最大的努力避免。<br><br><i>break 和 continue</i><br><br>有时候在循环体内,需要立即跳出循环或跳过循环体内其余代码而进行下一次循环。break 和 continue 帮了我们大忙。<br><br>break;<br><br>本语句放在循环体内,作用是立即跳出循环。<br><br>continue;<br><br>本语句放在循环体内,作用是中止本次循环,并执行下一次循环。如果循环的条件已经不符合,就跳出循环。<br><br>例 <div class="blockcode"><font face="NSimsun"><code id="code9">for (i = 1; i < 10; i++) {<BR> if (i == 3 || i == 5 || i == 8) continue;<BR> document.write(i);<BR>}</CODE><BR></FONT></DIV>输出:124679。<br><br><I>switch 语句</I><br><br>如果要把某些数据分类,例如,要把学生的成绩按优、良、中、差分类,我们可能会用 if 语句: <DIV class=blockcode><FONT face=NSimsun><CODE id=code10>if (score >= 0 && score < 60) {<br> result = 'fail';<br>} else if (score < 80) {<br> result = 'pass';<br>} else if (score < 90) {<br> result = 'good';<br>} else if (score <= 100) {<br> result = 'excellent';<br>} else {<br> result = 'error';<br>}</code><br></font></div>看起来没有问题,但使用太多的 if 语句的话,程序看起来有点乱。switch 语句就是解决这种问题的最好方法。 <div class="blockcode"><font face="NSimsun"><code id="code11">switch (e) {<br> case r1: (注意:冒号)<br> ...<br> [break;]<br> case r2:<br> ...<br> [break;]<br> ...<br> [default:<br> ...]<br>} </code><br></font></div>이 큰 섹션의 기능은 다음과 같습니다. e(e는 표현식)의 값을 계산한 다음 아래의 "case" 뒤에 있는 r1, r2...와 비교합니다. e와 동일한 값이 발견되면 "case"입니다. "가 실행됩니다. break 문을 만나거나 스위치 문단("}")이 끝날 때까지 다음 명령문을 실행합니다. e와 일치하는 값이 없으면 "default:" 다음 문이 실행됩니다. 기본 블록이 없으면 스위치 문이 종료됩니다. <br><br>위의 if 섹션은 스위치를 사용하여 다시 작성할 수 있습니다. <div class="blockcode"><font face="NSimsun"><code id="code12">switch (parseInt(score / 10)) {<br> case 0:<br> case 1:<br> case 2:<br> case 3:<br> case 4:<br> case 5:<br> result = 'fail';<br> break;<br> case 6:<br> case 7:<br> result = 'pass';<br> break;<br> case 8:<br> result = 'good';<br> break;<br> case 9:<br> result = 'excellent';<br> break;<br> default:<br> if (score == 100)<br> result = 'excellent';<br> else<br> result = 'error';<br>}</code><br></font></div>parseInt() 메소드는 나중에 소개될 예정이며 반올림에 사용됩니다. 마지막 기본 섹션에 사용된 if 문은 100개 포인트를 오류로 처리하지 않도록 하기 위한 것입니다(parseInt(100 / 10) == 10). <br></code></font></div>