JavaScript语言编程

 JavaScript

  --2013年10月30日23:10:20

1  变量的定义

虽然JavaScript支持变量未经定义直接使用,但推荐进行变量定义,否则变量的生命周期难以确定。

在定义变量时,因为JavaScript为弱类型语言,所以不需要指定变量类型,只需要指定变量名称即可,也可以为变量赋初始值。定义变量时可以使用var关键字。

注意:因为JavaScript代码总是在同一网页内有效,并不能跨网页运行,所以也不需要定义类似于Java语言中的访问修饰符(public、private等)。

JavaScript变量的命名规则与Java相似,只能包含数字、字母、下画线和$符号,大小写敏感,不可以使用JavaScript的关键字和保留字。

例07_2.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     var a;      //定义变量  

6.     var b = 3;  //定义变量并赋初始值  

7.     var c = 'String', d = "String"; //定义多个变量  

8. </script> 

9. </head> 

10. <body> 

11. </body> 

12. </html> 

 

7.3.2  变量的类型

虽然不能在定义变量时指定变量类型,但是JavaScript会根据变量的值自动决定类型,JavaScript中常见的内置变量类型如下。

数字型:可以存储小数或整数。

布尔型:可以存储true或false。

字符串:属于引用类型,可以存储字符串。

数组:属于引用类型,存储多项数据。

如果要将字符串转换为数字类型,可以使用parseInt或parseFloat方法,如果无法转换为数字,则JavaScript会返回特殊值"NaN(Not a Number)",如下所示:

例07_3.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     var a = 3;  

6.     var b = "3";  

7.     var c = a + b;          //结果是33  

8.     var d = a + parseInt(b);    //结果是6  

9.     var e = a + (b - 0);        //结果是6  

10.     var f = parseInt('a');      //结果是NaN  

11. </script> 

12. </head> 

13. <body> 

14. </body> 

15. </html> 

注释与特殊符号

JavaScript语言中的注释与Java语言中的注释规则相同,支持单行注释(//)与多行注释(/*…*/),注意不能在JavaScript内部使用HTML语言中的"<!- -->"注释。在JavaScript中字符串可以使用双引号或单引号引起来,在不引起冲突的情况下可以混用,也可以使用反斜杠进行转义,如下例所示:

例07_4.html 

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     //a的值为It's mine.  

6.     var a = "It's mine.";  

7.     //b的值为he say : "good".  

8.     var b = 'he say : "good".';  

9.     //c的值he say : "It's good".  

10.     var c = 'he say : "It\'s good".';  

11. </script> 

12. </head> 

13. <body> 

14. </body> 

15. </html> 

运算符

运算符与表达式基本与Java相同,常用的运算符如表7-1所示(优先级自上而下)。

表7-1  常用的运算符


运算符


使用格式


描  述


括号


(x)、[x]


中括号表示数组的下标


逻辑反


!x


返回与x(布尔值)相反的布尔值


自加/自减


x++、x--


x自加、自减1,与Java相同,运算后++或--


++x、--x


x自加、自减1,与Java相同,运算前++或--


算术运算符


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或false3

其中3个等号(===)表示同时比较值和类型


逻辑运算符


x&&y


x和y同为true,则返回true,否则返回false


x||y


x和y任一为true,则返回true,否则返回false


条件运算符


z?x:y


表达式z为true,返回x,否则返回y


赋值运算符


x=y


把y赋值给x


符合运算符


x+=y 

x-=y

x*=y 

x/=y 

x%=y


x加、减、乘、除、模y,结果赋值给x

7.4   JavaScript中的流程控制语句(1)

JavaScript语言中的流程控制语句与Java语言中几乎完全一致,分支流程可以使用if else结构或switch结构,循环流程可以使用for或while循环,具体语法如下。

1.if语句的语法结构

if语句的语法结构如下:

1. if (条件表达式A) {  

2. //条件表达式A为true,所执行的代码块  

3. } else if(条件表达式)B {  

4.     //条件表达式B为true,所执行的代码块  

5. } else {  

6.     // 条件表达式A和条件表达式B都为false,所执行的代码块  

7. }  

2.switch语句的语法结构

switch语句的语法结构如下:

1. switch (表达式) {  

2.    case 值1 :  

3.        //表达式与值1匹配时,所执行的代码块  

4.         break;  

5.    case 值2 :  

6.        //表达式与值2匹配时,所执行的代码块  

7.         break;  

8.    default :  

9.        //所有case值都与表达式不匹配时,所执行的代码块  

10. }  

3.for语句的语法结构

for语句的语法结构如下:

1. for (初始化语句; 循环判断条件; 循环执行语句) {  

2.        //循环体   

3. }  

4.while语句的语法结构

while语句的语法结构如下:

1. while (循环判断条件) {  

2. //循环体     

3. }  

5.do…while语句的语法结构

do…while语句的语法结构如下:

1. do {  

2. //循环体     

3. } while (循环判断条件);  

6.综合演示

下例综合使用各种流程结构通过JavaScript动态在页面中生成一个隔行换色的HTML表格,其中用到了document.write()方法,该方法用于向HTML页面中输出内容。

例07_5.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     //rows为表格的行数,cols为表格的列数  

6.     var rows = 6;  

7.     var cols = 8;  

8.     document.write('<table width="100%" border="1">');  

9.     document.write('<caption>动态生成表格</caption>');  

10.     document.write('<tbody>');  

11.     for (var row = 0; row < rows; row++) {  

12.         if (row % 2 == 0) {  

13.             document.write('<tr bgcolor="#cccccc">');  

14.         } else {  

15.             document.write('<tr>');           

16.         }  

17.         for (var col = 0; col < cols; col++) {  

18.             document.write('<td>' + col + '</td>');  

19.         }  

20.         document.write('</tr>');          

21.     }  

22.     document.write('</tbody>');  

23.     document.write('</table>');  

24. </script> 

25. </head> 

26. <body> 

27. </body> 

28. </html> 

执行代码,结果如图7-2所示。


 


图7-2  代码在IE浏览器中的显示结果

JavaScript中的常用方法

JavaScript中提供了很多常用的方法,如上例中用到的document.write方法,现介绍3个用于与用户交互的方法,如表7-2所示。

表7-2  3个用于与用户交互的方法


方法名


作  用


参数与返回值


alert


显示消息对话框


接收二个字符串参数,用于显示消息,无返回值


confirm


显示确认对话框


接收二个字符串参数,用于显示提示

消息,返回boolean类型的值,代表用户的选择


prompt


显示输入对话框


接收两个字符串参数,第一个用于显示

提示消息,第二个用于设置默认值(可省略),

返回用户的输入(如用户取消输入返回null)

请注意这3个方法显示的对话框都是模态对话框,即会停止当前脚本的运行直到用户关闭对话框为止,下面的例子综合使用了这3个方法

例07_6.html:

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     alert("现在演示alert、confirm与prompt方法");  

6.     var name = prompt("请输入您的姓名", "匿名");  

7.     var flag = confirm("请确认您的姓名:" + name);  

8.     if (flag) {  

9.         alert('确认无误!');  

10.     } else {  

11.         alert('确认失败');  

12.     }  

13. </script> 

14. </head> 

15. <body> 

16. </body> 

17. </html> 

执行代码,结果如图7-4所示。


 


图7-4  代码在IE浏览器中的显示结果

2.自定义方法

JavaScript语言中的自定义方法与Java语言有较大的不同,第一JavaScript中没有方法修饰符,所有方法都是本页面内可以访问;第二由于JavaScript是弱类型语言,所以不需要声明方法的返回值类型;第三JavaScript中的方法不支持重载,但是支持类似于Java中变长参数的特性。定义一个方法的语法如下:

1. function 方法名 ( 参数1, 参数2, … ) {  

2. //函数体     

3. return 返回值;     

4. }  

JavaScript中的方法(2)

下例演示了通过定义方法计算两个数的和:

例07_7.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     function add(a, b) {  

6.         //如果不通过parseInt方法转换为数字,会进行字符串的连接  

7.         var c = parseInt(a) + parseInt(b);  

8.         return c;  

9.     }  

10.       

11.     var a = prompt("请输入第一个数", 0);  

12.     var b = prompt("请输入第二个数", 0);  

13.     //请注意变量的作用范围  

14.     var c = add(a, b);  

15.     alert("计算结果是:" + c);  

16. </script> 

17. </head> 

18. <body> 

19. </body> 

20. </html> 

如果想计算不确定数目的若干个数字的和,就可以使用JavaScript中的一个特殊数组,名为arguments,这个数组用来保存调用方法时传递的所有参数,如下例所示:

例07_8.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     function add() {  

6.         //获取arguments数组的长度  

7.         var length = arguments.length;  

8.         var c = 0;  

9.         for (var i = 0; i < length; i++) {  

10.             c += parseInt(arguments[i]);  

11.         }  

12.         return c;  

13.     }  

14.       

15.     document.write("<p>无参数 = " + add());  

16.     document.write("<p>1 = " + add(1));  

17.     document.write("<p>1,3 = " + add(1,3));  

18.     document.write("<p>1,3,5 = " + add(1,3,5));  

19.     document.write("<p>1,3,5,7,9 = " + add(1,3,5,7,9));  

20. </script> 

21. </head> 

22. <body> 

23. </body> 

24. </html> 

执行代码,结果如图7-5所示。 


 


图7-5  代码在IE浏览器中的显示结果

JavaScript中的方法(3)

JavaScript中函数的参数还有更灵活的运用方式,如下例所示:

例07_9.html

1. <html> 

2. <head> 

3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

4. <script type="text/javascript"> 

5.     function output(times, char, end) {  

6.         var s = '';  

7.         for (var i = 0; i < times; i++) {  

8.             if (char) {  

9.                 s+=char;  

10.             } else {  

11.                 s+='*';  

12.             }  

13.         }  

14.         document.write(s);  

15.         if (end) {  

16.             document.write(end);              

17.         } else {  

18.             document.write("<br/>");                          

19.         }  

20.     }  

21.       

22.     output(20);  

23.     output(20, "O");  

24.     output(20);  

25.     output(20, "H", "<hr/>");  

26.     output(20, '<img src="07_8.png"/>', "<hr/>");  

27. </script> 

28. </head> 

29. <body> 

30. </body> 

31. </html> 

执行代码,结果如图7-6所示。


 


图7-6  代码在IE浏览器中的显示结果

注意:因为JavaScript中方法的参数长度是可变的,所以JavaScript并不支持类似于Java语言的方法重载特性。

时间: 2024-11-15 23:52:11

JavaScript语言编程的相关文章

Javascript模块化编程(二):AMD规范

今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!考虑到Javascript模块现在还没有官方规范,这一点就更重要了. 目前,通行的Javascript模块规范共有两种:CommonJS和AMD.我主要介绍AMD,但是要先从CommonJS讲起. 八.CommonJS 200

Javascript异步编程的4种方法

你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推. 这种模式的好处是实现起来比较简单,执行环境相对单纯:坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行.常见的浏 览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其

JavaScript 面向对象编程, 第一部分: 继承

javascript|编程|对象|继承 我们将向你展示 JavaScript 如何实现面向对象的语言中的: 继承. 同时, 这些例子将向你展示如何实现类的封装. 在此, 我们不会讨论多态实现. 虽然 JavaScript 是脚本语言, 但它所支持的面向对象编程也是非常强大的. 虽然它没有类和实例, 但它有对象, 原型和隐式的继承. 我们将会解释如何模拟继承及其超类与子类之间关系的形式. 原型是理解继承概念的关键, 我们将会教你如何建立原型, 如何检测一个对象是否是另外一个对象的原型, 及其 Ja

Javascript模块化编程(二)AMD规范

这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!考虑到Javascript模块现在还没有官方规范,这一点就更重要了. 目前,通行的Javascript模块规范共有两种:CommonJS和AMD.我主要介绍AMD,但

JavaScript语言概况

Internet时代,造就了我们新的工作和生活方式,其互联性.开放性和共享信息的模式,打破了传统信息传播方式的重重壁垒,为我们带来了新的机遇.随着计算机和信息时代的到来,人类社会前进的脚步在逐渐加快,每一天都有新的事情发生,每一天都在创造着奇迹.随着Internet技术的突飞猛进,各行各业都在加入Internet的行业中来.无论从管理方面,还是从商业角度来看,Internet都可以带来无限生机.通过Internet,可以实现地区.集体乃至个人的连接,从而达到一种"统一的和谐".那么怎样

javascript函数式编程实例分析

  这篇文章主要介绍了javascript函数式编程,实例分析了javascript函数式编程的相关使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了javascript函数式编程.分享给大家供大家参考.具体分析如下: js像其他动态语言一样是可以写高阶函数的,所谓高阶函数是可以操作函数的函数.因为在js中函数是一个彻彻底底的对象,属于第一类公民,这提供了函数式编程的先决条件. 下面给出一个例子代码,出自一本js教程,功能是计算数组元素的平均值和标准差,先列出非函数式编程的一种写法

JavaScript 模块化编程(笔记)

 一直对JS都是一知半解,最近遇到这方面问题,所以在网上学习了一下,现在还没有完全明白,先贴出笔记; 第一章 JavaScript模块化编程 (一):模块的写法 一 原始写法 // 模块就是实现特定功能的一组方法;只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块; function m1(){ // ... } function m2(){ // ... } // 上面的函数m1()和m2(),组成一个模块;使用时直接调用就行; // 缺点:"污染"了全局变量; 无

重读《JavaScript DOM编程艺术》(第一版)

今天来了雅兴去图书馆看书.把<JavaScript DOM编程艺术>温习了一遍,平时写js的机会不是特别多,很多知识都有些模糊了. 伴随着身边键盘卡啦卡啦的声音,一位手速不是一般的快的程序猿.我也快速的回顾了下~ Chapter 1     JavaScript简史 1.Netscape(网景)/Sun公司 2.JavaScript 1.0 - Netscspe Navigator 2 3.VBScript - IE 3 4.ECMA标准化 - 浏览器之争 5.什么是DOM? W3C 文档对象

《JavaScript面向对象编程指南(第2版)》——第1章 面向对象的JavaScript 1.1 回顾历史

第1章 面向对象的JavaScript 自Web诞生以来,人们对于动态与响应式页面的需求便与日俱增.虽然静态的HTML文本页面在可读性方面或许会更好一些,特别是在有了CSS的辅助之后,页面排版显得更加美观了,但从另一方面来说,如果我们能让人们像在桌面上那样使用浏览器中的应用程序,事情或许会变得更有趣一些.如今,我们已能在浏览器中直接使用电子邮件.日历.电子银行.购物.绘画.游戏及文本编辑.这都要感谢一种Web编程语言-JavaScript,是它让这些Web应用成为了可能.然而,JavaScrip