Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159575
  • 博文数量: 27
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 701
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-22 17:14
个人简介

诚信打天下

文章分类

全部博文(27)

文章存档

2013年(27)

我的朋友

分类: JavaScript

2013-02-22 17:42:17

目录


   在学习HTML(超文本标记语言)开发网上站点时,没有像其它网站这么酷,似乎还缺少些什么东西,那别人的这种效果是怎么做出来的呢?通过查询,要达到网页炫酷的效果有以下几种方式:使用Flash特效技术等。那到底什么是Javascript,Javascript又用来做什么?下面将走进javascritp脚本语言的技术殿堂。用脚本不仅可以制作网站特效,还可以做表单验证。像网上银行业务注册,要填写身份证号,手机号,填写完毕还要验证有没有这个身份证号,手机号对不对,如果该网站访问量很大,服务器的负担就会很重,就像100个学生等待一位老师一一解答问题一样,如果使用客户端脚本技术,这时就像老师让学生们自问自答,这样老师就没压力了。


为什么要学习javascript

   起初HTML是应用Internet上传输数据的一种文档格式,但随着社会的发展,焦点很快从学术领域转变成普通用户领域,Internet逐渐成为人们的一种娱乐方式,开发者为了吸引普通用户,让之前死气沉沉的页面变得更加丰富多彩,更加互动,SunMicrosystems和Netscape共同开出了Javascript脚本语言。使用Javascript可以动态的控制DOM模型,从而可以构建人际交互的HTML系统。Javascript还可以执行:任务计算、编写游戏、表单检查、自定义图形、创建安全密码等强大功能。主要基于以下两点学习Javascript脚本语言:减轻服务端压力的表单检查和让页面更加丰富多彩的动态效果。


什么是Javascript

   javascript是一种基于对象和事件驱动的脚本语言,例如操作客户端的DOM对象和响应用户的操作。javascript脚本嵌入客户端浏览器解释执行,无论是服务端还是客户端javascript,javascript代码都将下载到客户端,从而减轻服务端压力。另外javascript是弱类型语言,意味着声明时不必明确数据类型,程序在执行时会根据数据值动态推断出数据的类型,弱类型带来的优点是灵活性强,缺点是易出错。


javascript执行原理

    客户端和Web服务器交互模型是请求/响应模型。javascript具体执行过程是:用户输入请求,客户端浏览器向服务器请求带有javascript的web程序,服务器接收响应请求并将处理发送给请求者,客户端浏览器下载带有javascript的html页面,最后由客户端浏览器从上往下逐行解析html标签和脚本呈现给用户。为了更好的理解附图一张。

包含javascript的页面客户端只需下载一次


javascript基本语法

    javascript也具备面向对象特性,所以像c#语法中的基础语法javascript基本也有。基本语法结构是一套基础性规则,它用来告诉你如何用这门语言来编写程序。作为基础语法,它规定了如何编写注释,声明变量的规则是什么等等。

 

5.1
变量的声明和赋值
  
javascript是一种弱类型语言,在声明时无需指定数据类型,类型由程序执行时推断出变量的值类型。声明变量只需使用一个var关键字:

var a;

var num;

也可以声明时赋初始值:

var a = 1;

var num ="1";

也可以同时声明多个变量,之间用逗号分隔:

var a,b;

var a=1,num="1";

var a, num =1;

javascript中即使没有声明变量也可以使用,系统会自动声明变量a,但是不推荐这样使用:

a=1;

5.1.1 javascript变量命名规则
可以以$、字母下划线开头,一般采用Pascal和Camel命名法,如下。

Pascal命名法,即所有单词首字母大写:

var
UserName;

Camel命名法,即首单词的首字母小写,其它都大写:

var
userName;


5.2 注释
    javascript有2种注释格式,单行和多行注释。

单行注释,使用//

var a; 
//声明了变量a

多行注释,使用双斜杠加两星:



5.3 逻辑控制语句
顾名思义,逻辑控制语句就是控制程序代码的执行顺序或称为流程控制语句,javascript中有3大类控制语句,条件语句、循环语句、开关语句。


5.3.1 条件语句 if
else
/else if

    它的主要作用是有条件的执行某段代码,先将if
else
如下:

5.3.1.1
if else
有2种形式下面先介绍第一种形式,当条件为true执行代码段:

if(布尔表达式)

{

//javascript代码1,如果布尔表达式条件为真,就执行这段

}

第二种形式引入else,当条件为false执行else代码段:

if(布尔表达式)

{

//javascript代码1,如果布尔表达式条件为真,就执行这段

}else

{

//javascript代码2,否则执行这段

}

5.3.1.2
else
if
条件控制语句是if
else
第一种形式的连贯写法,用于控制多个分支,下面介绍if else
第一种形式引出第else if,当有多个分支时可以这样写:

if(条件表达式1)

{

//javascript代码1,如果布尔表达式条件为真,就执行这段

}

if(条件表达式2)

{

//javascript代码2,如果布尔表达式条件为真,就执行这段

}

if(条件表达式3)

{

//javascript代码3,如果布尔表达式条件为真,就执行这段
}

以上多个if分支代码看似并没什么问题,但是我觉得这种写法会给程序员一些误导,不连贯性,下面推荐另一种写法:

if(条件表达式1)

{

//javascript代码1,如果布尔表达式条件为真,就执行这段
}
else
if(
条件表达式2)

{

//javascript代码2,如果布尔表达式条件为真,就执行这段
}else if(条件表达式3)

{

//javascript代码3,如果布尔表达式条件为真,就执行这段
}

5.3.2 循环语句 for、while、do/while、for/in

    循环语句的作用就是反复的执行一段代码,这个过程也可以叫做回路。javascript中有4中循环,由于时间关系,只记录一种最常用的for循环,如下:

5.3.2.1
for
循环最常用方式之一就是应用于数组遍历和循环特定的次数。for循环结构就像下面所看到的的,它由初始化表达式、循环条件表达式、增或减量组成,每个表达式用分号分隔。初始化表达式表示循环的起始值,只在循环前检测一次,开始循环前会先检测循环条件成不成立,成立时进入循环,当完成一个循环时就会对初始值增量或减量,随后继续判断循环条件成不成立,以此类推直到循环条件不成立时退出整个循环:

for(初始化表达式;循环条件表达式;增或减量)

{//准备循环代码}

下面写一个完整的循环:

fo(var a=1;a<=10;a++)

{

//这个将不停的循环10次。每循环一次a将加1。

}

5.3.3 开关语句 switch

    switch也属于分支语句,有if为什么还有switch,存在即合理,当然自有它的用处。想一下,有一种情况是使用if判断多个分支,判断条件又都依赖于一个表达式的值。多个分支、判断条件又都依赖于一个表达式的值,这两者同时成立时,就可以使用switch 开关语句,switch开关语句对于多个分支的判断效率要更高,代码逻辑及结构更清晰。下面直接上switch语法,解释其它需要注意和了解的地方,这样更直观:

switch(表达式)

{

case
1:      //switch执行时先计算出表达式的值。假若值==1,就执行该段

break;       //停止switch

case 2:      //如果值==2时,就执行该段

break;     

case 3:     //每个case 等价于一个if分支

break; 

case 4:    //后面一半是常量,javascript中也可以写成一个表达式  

case 5:    //注意以下几个case分支时连贯的,并没有在后面写break,在js中是允许的,开发中,还没用这种写法

case 6:   //代码。。

case 7:   //代码。。

break;

default:    //如果没有匹配的case块时,则执行默认的代码段

break;     //可以不写break,不会出错
}



5.4 运算符简述


   上面经常提到表达式,什么是表达式?表达式由什么组成?这里将讲表达式的组成之一运算符。运算符用于将一个或多个操作数组合起来进行运算。例如 + 、-
符号,+ 符号属于算数运算符,用它可以组成算数表达式。简单说下什么是表达式,表达式是由运算符和操作数的组成,任何一个表达式都将返回一个值。下面列出常用运算符类别:

算数运算符:+-*/%++--

比较运算符:<><=>===!=

逻辑运算符:!&&||

赋值运算符:= 等等


5.5 类型转换


    javascript中类型非常灵活,对于数据系统有一套规则来决定数据的类型,这个推定的过程称为隐式转换,隐式转换带来是对数据的不明确性。如果想要明确精准的数据及类型,javascript也提供自身数据类型到另一种数据类型的转换和强制换换,这个称为显示转换。javascript数据类型分为两类:原始值类型和对象类型。原始值类型包括数字、字符串、布尔值,还有两个特殊的原始值
null(空) 和undefined
(未定义)。对象类型就是一组有序或无序的属性集合,每个属性键/值队构成。这里记录三种原始值类型中的数字、字符串、布尔类型之间的互转。
5.5.1 BooleanNumber
类型
转换成字符串

    三种原始值都有toString()方法,可以使用toString()方法分别将数字布尔转换成字符串类型,使用方法如下。

5.5.1.1
布尔类型转字符串:

var b =false;        //声明了布尔类型变量b

alert(b.toString()); //用toString()方法,将布尔类型转换成字符串。最后输出"false"

5.5.1.2 数字类型转字符串,数字的toString()有2中模式,默认是10进制形式:

var n =
10;          //声明了数字类型变量n

alert(n.toString()); //无论是八进制还是十进制形式数字,默认都会以10进制形式返回。返回字符串 "10"

var c=
null;

c.toString(); //出错

5.5.2
字符串
转类型转换成数字

    ECMAScript提供2种方法把非数字转换成数字,即parseInt()parseFloat()。前者转换成整数,后者转换成浮点数,只有对String
类型数字值使用有效,其它类型将返回Nan(非数字),如下:

5.5.2.1 parseInt()
转换前先从字符串索引顺序开始检测字符是否为有效数字,如果首个字符不是数字将返回NaN。否则持续检测并返回转换有效的数字,检测过程直到遇到无效字符终止:

alert("abc123abc");   //首字母检测无效,转换失败返回NaN

alert(parseInt("123abc")); //检测首字符有效,检测并转换,直到检测a字符终止。最终返回有效数字123

alert(parseInt("0xA"))//返回10,默认转10进制形式。和数字转字符串的toString()原理一样,只不过是反过来

5.5.2.2
parseFloat()
检测过程和parseFloat()
相似,不同之处在于字符串必须是十进制或浮点数形式。parseFloat()将遇到的第1个数点视为有效字符:

alert("123.1abc")//返回123.1,检测a字符无效终止

alert("123.1.1");   //返回123.1,检测到第二个小数点无效终止

alert("0101");     //返回101

5.5.3
强制类型转换

    ECMAScript提供3种方法把值的类型强制转换特定类型 Boolean(value)Number(value)String(value)。强制转换虽然提供一些方便,但是不宜控制,给值前应该要保证数据的正确性。

5.5.3.1 Boolean(value) 将给值 value 强制转换成布尔类型:

var a = Boolean("")//空字符串将返回false

var a2 = Boolean(0);   //数字0将返回false

var a3 =Boolean(null); //将返回false

var a4 = Boolean(50);  //非0数字返回true

var a5 = Boolean("aaa"); //非空字符串返回true

var a6 = Boolean(new Object()); //将返回true,对象

5.5.3.2 Number(value)将给值 value 强制转换成数字类型,数字强制转换有一点不同于parseInt()parseFloat(),强制数字类型转换在遇到无效字符是返回NaN:

var n = Number(false); //将返回0

var n2= Number(true)//经返回1

var n3 =Number(undefined); //将返回NaN

var n4 = Number(null);   //将返回0

var n5 = Number("1.2.1"); //将返回NaN

var n6 =Number("abc123"); //将返回NaN

var n7 =Number("1.2") //将返回浮点型1.2

5.5.3.3 String(value) 将给值强制转换成字符串,这个最简单,无论给什么值最后都将字符串形式返回

var s = String(null);  //将返回"null"


阅读(902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~