javaScript.docx

上传人:b****6 文档编号:7871213 上传时间:2023-05-12 格式:DOCX 页数:41 大小:545.88KB
下载 相关 举报
javaScript.docx_第1页
第1页 / 共41页
javaScript.docx_第2页
第2页 / 共41页
javaScript.docx_第3页
第3页 / 共41页
javaScript.docx_第4页
第4页 / 共41页
javaScript.docx_第5页
第5页 / 共41页
javaScript.docx_第6页
第6页 / 共41页
javaScript.docx_第7页
第7页 / 共41页
javaScript.docx_第8页
第8页 / 共41页
javaScript.docx_第9页
第9页 / 共41页
javaScript.docx_第10页
第10页 / 共41页
javaScript.docx_第11页
第11页 / 共41页
javaScript.docx_第12页
第12页 / 共41页
javaScript.docx_第13页
第13页 / 共41页
javaScript.docx_第14页
第14页 / 共41页
javaScript.docx_第15页
第15页 / 共41页
javaScript.docx_第16页
第16页 / 共41页
javaScript.docx_第17页
第17页 / 共41页
javaScript.docx_第18页
第18页 / 共41页
javaScript.docx_第19页
第19页 / 共41页
javaScript.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

javaScript.docx

《javaScript.docx》由会员分享,可在线阅读,更多相关《javaScript.docx(41页珍藏版)》请在冰点文库上搜索。

javaScript.docx

javaScript

一.JavaScript的历史

a)1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)

b)Netscape接收Nombas的理念,(BrendanEich)在其NetscapeNavigator2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript

c)微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript.

d)为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳ECMAScript作为标准(ISO/IEC-16262)。

从此,Web浏览器就开始努力(虽然有着不同的程度的成功和失败)将ECMAScript作为JavaScript实现的基础。

EcmaScript是规范.

1.1,ECMAScript

尽管ECMAScript是一个重要的标准,但它并不是JavaScript唯一的部分,当然,也不是唯一被标准化的部分。

实际上,一个完整的JavaScript实现是由以下3个不同部分组成的:

∙核心(ECMAScript)

∙文档对象模型(DOM)Documentobjectmodel(整合js和html和css)

∙浏览器对象模型(BOM)Broswerobjectmodel(整合js和浏览器)

∙Javascript在开发中绝大多数情况是基于对象的.也是面向对象的.

1.2ECMAScript

Web浏览器对于ECMAScript来说是一个宿主环境,但它并不是唯一的宿主环境。

事实上,还有不计其数的其他各种环境(例如Nombas的ScriptEase,以及Macromedia同时用在Flash和DirectorMX中的ActionScript)可以容纳ECMAScript实现。

那么ECMAScript在浏览器之外规定了些什么呢?

简单地说,ECMAScript描述了以下内容:

∙语法

∙类型

∙语句

∙关键字

∙保留字

∙运算符

∙对象

二ECMAScript基础

2.1.ECMAScript语法

1.变量区分大小写

a>可一次声明多个变量,并且变量不必具有相同的类型.例如:

vartest="hi",age=25;

b>命名规范:

●第一个字符必须是字母、下划线(_)或美元符号($)

●余下的字符可以是下划线、美元符号或任何字母或数字字符

c>ECMAScript的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。

这是该语言的便利之处,不过如果不能紧密跟踪变量,这样做也很危险。

最好的习惯是像使用其他程序设计语言一样,总是声明所有变量。

2.变量是弱类型的

3.每行的分号可有可无.没有就按折行符的末尾作为结尾.

4.注释与java,c,php相同

5.使用{}来封装代码块

6.变量声明不是必须的.

著名的变量命名规则(附录)

只是因为变量名的语法正确,并不意味着就该使用它们。

变量还应遵守以下某条著名的命名规则:

Camel标记法

首字母是小写的,接下来的字母都以大写字符开头。

例如:

varmyTestValue=0,mySecondValue="hi";

Pascal标记法

首字母是大写的,接下来的字母都以大写字符开头。

例如:

VarMyTestValue=0,MySecondValue="hi";

匈牙利类型标记法

在以Pascal标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。

例如,i表示整数,s表示字符串,如下所示“

VariMyTestValue=0,sMySecondValue="hi";

---------------------------------------------------------

数组

a

aValues

布尔型

b

bFound

浮点型(数字)

f

fValue

函数

fn

fnMethod

整型(数字)

i

iValue

对象

o

oType

正则表达式

re

rePattern

字符串

s

sValue

变型(可以是任何类型)

v

vValue

2.2原始值和引用值

在ECMAScript中,变量可以存在两种类型的值,即原始值和引用值。

原始值

存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。

引用值

存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

5种原始值类型如下:

●Undefined、

●Null、

●Boolean、

●Number

●String

在许多语言中,字符串都被看作引用类型,而非原始类型,因为字符串的长度是可变的。

ECMAScript打破了这一传统。

Undefined类型

Undefined类型只有一个值,即undefined。

当声明的变量未初始化时,该变量的默认值是undefined。

当函数无明确返回值时,返回的也是值"undefined";

Null类型

另一种只有一个值的类型是Null,它只有一个专用值null,即它的字面量。

值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。

尽管这两个值相等,但它们的含义不同。

undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象(在讨论typeof运算符时,简单地介绍过这一点)。

如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。

Boolean类型

Boolean类型是ECMAScript中最常用的类型之一。

它有两个值true和false(即两个Boolean字面量)。

即使false不等于0,0也可以在必要时被转换成false.

Number类型

ECMA-262中定义的最特殊的类型是Number类型。

这种类型既可以表示32位的整数,还可以表示64位的浮点数。

●定义十进制整数variNum=86;

●定义八进制variNum=070;(了解)

●定义十六进制variNum=0xAB;(了解)

●科学计数法varfNum=5.618e7;varfNum=8-e17(了解)

●定义浮点数varfNum=5.0;

对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。

●数字的最大值:

Number.MAX_VALUE

●数字的最小值:

Number.MIN_VALUE

●超过最大值:

Number.POSITIVE_INFINITY(不可参与运算)

●小于最小值:

Number.NEGATIVE_INFINITY(不可参与运算)

●特殊值:

NaN(NotANumber).一般说来,这种情况发生在类型(String、Boolean等)转换失败时。

NaN不等于NaN,可以使用isNaN()方法.

String类型

它是唯一没有固定大小的原始类型。

声明时可以使用单引号或者双引号.因为没有字符类型.

typeof运算符

ECMAScript提供了typeof运算符来判断一个值是否在某种类型的范围内。

可以用这种运算符判断一个值是否表示一种原始类型:

如果它是原始类型,还可以判断它表示哪种原始类型。

对变量或值调用typeof运算符将返回下列值之一:

●undefined-如果变量是Undefined类型的

●boolean-如果变量是Boolean类型的

●number-如果变量是Number类型的

●string-如果变量是String类型的

●object-如果变量是一种引用类型或Null类型的

注释:

您也许会问,为什么typeof运算符对于null值会返回"Object"。

这实际上是JavaScript最初实现中的一个错误,然后被ECMAScript沿用了。

现在,null被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

三ECMAScript语句

if语句

if语句是ECMAScript中最常用的语句之一,事实上在许多计算机语言中都是如此。

if语句的语法:

if(condition)statement1elsestatement2

其中condition可以是任何表达式,计算的结果甚至不必是真正的boolean值,ECMAScript会把它转换成boolean值。

如果条件计算结果为true,则执行statement1;如果条件计算结果为false,则执行statement2。

还可以串联多个if语句。

就像这样:

if(condition1)statement1elseif(condition2)statement2elsestatement3

do-while语句

do-while语句是后测试循环,即退出条件在执行循环内部的代码之后计算。

这意味着在计算表达式之前,至少会执行循环主体一次。

它的语法如下:

do{statement}while(expression);

while语句

while语句是前测试循环。

这意味着退出条件是在执行循环内部的代码之前计算的。

因此,循环主体可能根本不被执行。

它的语法如下:

while(expression)statement

for语句

for语句是前测试循环,而且在进入循环之前,能够初始化变量,并定义循环后要执行的代码。

它的语法如下:

for(initialization;expression;post-loop-expression)statement

switch语句

switch语句是if语句的兄弟语句。

开发者可以用switch语句为表达式提供一系列的情况(case)。

switch语句的语法:

switch(expression)

casevalue:

statement;

break;

casevalue:

statement;

break;

casevalue:

statement;

break;

casevalue:

statement;

break;

...

casevalue:

statement;

break;

default:

statement;

每个情况(case)都是表示“如果expression等于value,就执行statement”。

关键字break会使代码跳出switch语句。

如果没有关键字break,代码执行就会继续进入下一个case。

关键字default说明了表达式的结果不等于任何一种情况时的操作(事实上,它相对于else从句)。

四ECMAScript运算符

4.1ECMAScript一元运算符

void(函数后讲解)

void运算符对任何值返回undefined。

该运算符通常用于避免输出不应该输出的值,例如,从HTML的元素调用JavaScript函数时。

要正确做到这一点,函数不能返回有效值,否则浏览器将清空页面,只显示函数的结果。

例如:

window.open('about:

blank')">Clickme

如果把这行代码放入HTML页面,点击其中的链接,即可看到屏幕上显示"[object]"。

这是因为window.open()方法返回了新打开的窗口的引用。

然后该对象将被转换成要显示的字符串。

要避免这种效果,可以用void运算符调用window.open()函数:

void(window.open('about:

blank'))">Clickme

这使window.open()调用返回undefined,它不是有效值,不会显示在浏览器窗口中。

提示:

请记住,没有返回值的函数真正返回的都是undefined。

4.2i++,i--,++i,--i(跟java中一模一样)

vari=1;

Alert(i++);//1

Alert(++i);//3

Alert(i--);//3

Alert(--1);//1

4.3一元加法,一元减法(了解)

一元加法本质上对数字无任何影响:

variNum=20;

iNum=+iNum;

alert(iNum);//输出"20"

尽管一元加法对数字无作用,但对字符串却有有趣的效果,会把字符串转换成数字。

varsNum="20";

alert(typeofsNum);//输出"string"

variNum=+sNum;

alert(typeofiNum);//输出"number"

这段代码把字符串"20"转换成真正的数字。

当一元加法运算符对字符串进行操作时,它计算字符串的方式与parseInt()相似,主要的不同是只有对以"0x"开头的字符串(表示十六进制数字),一元运算符才能把它转换成十进制的值。

因此,用一元加法转换"010",得到的总是10,而"0xB"将被转换成11。

4.4ECMAScript位运算符(了解)跟java一模一样.

4.4.1位运算NOT~

位运算NOT由否定号(~)表示,位运算NOT实质上是对数字求负,然后减1,因此25变-26。

variNum1=25;//25等于00000000000000000000000000011001

variNum2=~iNum1;//转换为111111*********11111111111100110

alert(iNum2);//输出"-26"

还可以使用下面的方式:

variNum1=25;

variNum2=-iNum1-1;

alert(iNum2);//输出-26

4.4.2位运算AND&

variResult=25&3;

alert(iResult);//输出"1"

为什么得到这个结果?

25=00000000000000000000000000011001

3=00000000000000000000000000000011

---------------------------------------------

AND=00000000000000000000000000000001

4.4.3位运算OR|

variResult=25|3;

alert(iResult);//输出"27"

为什么得到这个结果?

25=00000000000000000000000000011001

3=00000000000000000000000000000011

--------------------------------------------

OR=00000000000000000000000000011011

4.4.4位运算XOR

variResult=25^3;

alert(iResult);//输出"26"

为什么得到这个结果?

25=00000000000000000000000000011001

3=00000000000000000000000000000011

---------------------------------------------

XOR=00000000000000000000000000011010

左移(<<)右移(>>)无符号右移(>>>)(了解)

4.4.5ECMAScript逻辑运算符(重要)

逻辑NOT运算符(!

∙如果运算数是对象,返回false

∙如果运算数是数字0,返回true

∙如果运算数是0以外的任何数字,返回false

∙如果运算数是null,返回true

∙如果运算数是NaN,返回true

∙如果运算数是undefined,返回true

逻辑AND运算符(&&)

逻辑AND运算的运算数可以是任何类型的,不止是Boolean值。

如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:

∙如果一个运算数是对象,另一个是Boolean值,返回该对象。

∙如果两个运算数都是对象,返回第二个对象。

∙如果某个运算数是null,返回null。

∙如果某个运算数是NaN,返回NaN。

∙如果某个运算数是undefined,返回undefined。

∙//1false&&o==>false

∙//2true&&o==>o==>true

∙//3o&&true==>true

∙//4o&&false==>false

∙//5o1&&o2==>

∙//6null&&true==>null

∙//7NaN&&true==>NaN

∙//8NaN&&null==>NaN

∙//9null&&NaN==>null

∙//10undefined&&true==>undefined

∙//11false&&undefined==>false

逻辑OR运算符(||)

与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值:

∙如果一个运算数是对象,并且该对象左边的运算数值均为false,则返回该对象。

∙如果两个运算数都是对象,返回第一个对象。

∙如果最后一个运算数是null,并且其他运算数值均为false,则返回null。

∙如果最后一个运算数是NaN,并且其他运算数值均为false,则返回NaN。

∙如果某个运算数是undefined,返回undefined。

∙//1false||o==>o

∙//2true||o==>true

∙//3o||false==>o

∙//4o||true==>o

∙//5o1||o2==>o1

∙//6null||false==>false

∙//7null||true==>true

∙//8null||undefined==>undefined

∙//9undefined||null==>null

4.4.6数学运算符

+-*/%

Vara=“1”+”1”;//”11”

Varb=“1”+1;//2

4.4.7ECMAScript关系运算符(重要)

varbResult="Blue"<"alpha";

alert(bResult);//输出true

在上面的例子中,字符串"Blue"小于"alpha",因为字母B的字符代码是66,字母a的字符代码是97。

比较数字和字符串

另一种棘手的状况发生在比较两个字符串形式的数字时,比如:

varbResult="25"<"3";

alert(bResult);//输出"true"

上面这段代码比较的是字符串"25"和"3"。

两个运算数都是字符串,所以比较的是它们的字符代码("2"的字符代码是50,"3"的字符代码是51)。

不过,如果把某个运算数该为数字,那么结果就有趣了:

varbResult="25"<3;

alert(bResult);//输出"false"

这里,字符串"25"将被转换成数字25,然后与数字3进行比较,结果不出所料。

4.4.8ECMAScript等性运算符

执行类型转换的规则如下:

∙如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。

false转换成0,true为1。

∙如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。

∙如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。

∙如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:

∙值null和undefined相等。

∙在检查相等性时,不能把null和undefined转换成其他值。

∙如果某个运算数是NaN,等号将返回false,非等号将返回true。

∙如果两个运算数都是对象,那么比较的是它们的引用值。

如果两个运算数指向同一对象,那么等号返回true,否则两个运算数不等。

全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。

这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

4.4.9ECMAScript条件运算符(三元运算符)(跟java中一模一样)

variable=boolean_expression?

true_value:

false_value;

4.4.10ECMAScript赋值运算符

∙乘法/赋值(*=)

∙除法/赋值(/=)

∙取模/赋值(%=)

∙加法/赋值(+=)

∙减法/赋值(-=)

variNum=10;

iNum=iNum+10;

等同于

variNum=10;

iNum+=10;

五ECMA对象

ECMAScript引用类型

从传统意义上来说,ECMAScript并不真正具有类。

事实上,除了说明不存在类,在ECMA-262中根本没有出现“类”这个词。

ECMAScript定义了“对象定义”,逻辑上等价于其他程序设计语言中的类。

varo=newObject();

对象分类

1.由ECMAScript定义的本地对象.独立于宿主环境的ECMAScript实现提供的对象.(nativeobject)

2.ECMAScript

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2