Javascript

Javascript的简介和用途:

Netscape(网景公司1994-2003) 发明了 JavaScript

当 Netscape Navigator 崭露头角时,
Nombas 开发了一个可以嵌入网页中的 CEnvi 的版本。
这些早期的试验被称为 Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端语言。
而 Nombas 丝毫没有料到它的理念将会成为万维网的一块重要基石。
当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。
此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。
而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,
就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,
点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。
那时正处于技术革新最前沿的 Netscape,
开始认真考虑开发一种客户端脚本语言来解决简单的处理问题。
当时工作于 Netscape 的 Brendan Eich,
开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 开发一个称之为 LiveScript 的脚本语言,
当时的目的是在浏览器和服务器(本来要叫它 LiveWire)端使用它。
Netscape 与 Sun 及时完成 LiveScript 实现。
就在 Netscape Navigator 2.0 即将正式发布前,
Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。
Netscape 的赌注最终得到回报,JavaScript 从此变成了因特网的必备组件。

三足鼎立
因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军浏览器,
发布了 IE 3.0 并搭载了一个 JavaScript 的克隆版,叫做 JScript(这样命名是为了避免与 Netscape 潜在的许可纠纷)。
微软步入 Web 浏览器领域的这重要一步虽然令其声名狼藉,
但也成为 JavaScript 语言发展过程中的重要一步。
在微软进入后,有 3 种不同的 JavaScript 版本同时存在:
Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript
以及 CEnvi 中的 ScriptEase。与 C 和其他编程语言不同的是,
JavaScript 并没有一个标准来统一其语法或特性,而这 3 中不同的版本恰恰突出了这个问题。随着业界担心的增加,
这个语言的标准化显然已经势在必行。

标准化
1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。
第 39 技术委员会(TC39)被委派来“标准化一个通用、跨平台、
中立于厂商的脚本语言的语法和语义
”(https://www.360docs.net/doc/f012104611.html,/memento/TC39.htm)。
由来自 Netscape、Sun、微软、Borland
和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了 ECMA-262,

该标准定义了名为 ECMAScript 的全新脚本语言。
在接下来的几年里,
国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。
从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)
将 ECMAScript 作为 JavaScript 实现的基础。

主要作用:
JavaScript是一种能让你的网页更加生动活泼的程式语言,
也是目前网页中设计中最容易学又最方便的语言。
你可以利用JavaScript轻易的做出亲切的欢迎讯息、漂亮的数字钟、
有广告效果的跑马灯及简易的选举,让这些特殊效果提高网页的可观性.

JavaScript和Java的区别
虽然JavaScript与Java有紧密的联系,但却是两个公司开发的不同的两个产品。
Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;
而JavaScript是Netscape公司的产品,其目的是为了扩展Netscape Navigator功能,
而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言, 它的前身是Live Script;
而Java的前身是Oak语言。下面对两种语言间的异同作如下比较:

基于对象和面向对象
Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。
它是一种基于对象(Object Based)和事件驱动(Event Driver)的编程语言。
因而它本身提供了非常丰富的内部对象供设计人员使用。

解释和编译
两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编译,
因而客户端上必须具有相应平台上的仿真器或解释器,
它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。
JavaScript是一种解释性编程语言,
其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器解释执行。

强变量和弱变量
两种语言所采取的变量是不一样的。
Java采用强类型变量检查,即所有变量在编译之前必须作声明。如:
Integer x;
String y;
x=1234;
x=4321;

其中X=1234说明是一个整数,Y=4321说明是一个字符串。
JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型,
如:
x=1234;
y="4321";
前者说明x为其数值型变量,而后者说明y为字符型变量。

代码格式不一样

Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,
其代码以字节代码的形式保存在独立的文档中。
JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载


编写HTML文档就像编辑文本文件一样方便。

嵌入方式不一样

在HTML文档中,两种编程语言的标识不同,JavaScript使用来标识,
而Java使用...来标识。

静态联编和动态联编
Java采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。
JavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,
如不经编译则就无法实现对象引用的检查。

javascript的执行环境
javascript是一种脚本语言,他依赖html和浏览器来执行
通常我们使用javascript的方式有两种,一种是直接在html中
嵌套javascript语言,例:






另一种是通过外链引入js文件,和css的外链引用像似。








二、基本数据类型

1.常量:
整型,浮点型。
布尔型:在javascript中,布尔类型只有true和false,而不是0和1。
字符型常量:
使用单引号(‘)或双引号(“)括起来的一个或几个字符。
如 "This is a book of JavaScript "、"3245"、"ewrt234234" 等。
数组:javascript数组也可以当作对象使用,Array()对象。
对象:常用的内置对象。
特殊字符
同C语言一样,JavaScript中同样以有些以反斜杠(/)开头的不可显示的特殊字符。通常称为控制字符。

2.变量:
变量的命名

JavaScript中的变量命名同其计算机语言非常相似,这里要注意以下两点:
A、必须是一个有效的变量,即变量以字母开头,中间可以出现数字如test1、text2等。
除下划线(-)作为连字符外,变量名称不能有空格、(+)、(-)、(,)或其它符号。
B、不能使用JavaScript中的关键字作为变量。
在JavaScript中定义了40多个类键字,这些关键是JavaScript内部使用的,
不能作为变量的名称。如Var、int、double、true不能作为变量的名称。
在对变量命名时,最好把变量的意义与其代表的意思对应起来,以免出现错误。

变量的命名最好在单词后面加上数字或者下划线

在JavaScript中,变量可以用命令Var作声明:
var mytest;
该例子定义了一个mytest变量。但没有赋予它的值。
Var mytest=”This is a book”
该例子定义了一个mytest变量, 同时赋予了它的值。
在JavaScript中,变量以可以不作声明,而在使用时再根据数据的类型来确其变量的类型。

var 声明变量

如:
x=100

y="125" ;
xy= True
cost=19.5 等。
其中x整数,y为字符

串,xy为布尔型,cost为实(浮点)型。

变量的声明及其作用域

JavaScript变量可以在使用前先作声明,并可赋值。
通过使用var关键字对变量作声明。对变量作声明的最大好处就是能及时发现代码中的错误;
因为JavaScript是采用动态编译的,而动态编译是不易发现代码中的错误,特别是变量命名的方面。
对于变量还有一个重要性──那就是变量的作用域。
在JavaScript中同样有全局变量和局部变量。全局变量是定义在所有函数体之外,
其作用范围是整个函数;而局部变量是定义在函数体之内,只对其该函数是可见的,
而对其它函数则是不可见的。

三、表达式和运算符
1、表达式
在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,
这一过程通常又叫称一个叫表达式来完成,可以说它是变量、常量、布尔及运算符的集合,
因此表达式可以分为算术表述式、字串表达式、赋值表达式以及布尔表达式等。

2、运算符
运算符完成操作的一系列符号,在JavaScript中有算术运算符,如+、-、*、/等;
有比较运算符如!=、== < > >= <=等;
有逻辑布尔运算符如!(取反) &&(且) ||(或)?:(三目操作符);
有字串运算如+ 、 +=等。

+号在js里面既可以作为算术运算符,也可以作为连接运算符,

变量类型之间的转换:
其他类型转换成字符类型:toString();
其它类型转化成整型:parseInt();
其他类型转化成浮点型:parseFloat();
检测数据类型:typeof()方法;


语法:
一、程序控制流
1、if else
2、while
3、for continue跳出单次循环,break结束整个循环.
4、do while
5、switch
6、for in 循环

注释 使用 // 注释一行
或者使用 /*...*/注释一段。(区块注释)
这里值得注意的是使用区块注释的时候,如果中间又嵌套了区块注释
这时候注释可能会出现中断。例子:
/*while(true){
/*alert("哈哈,你关不掉的");*/
}/*

JavaScript函数定义
function 函数名字(变量){
函数体;
Return 表达式;

}
定义一个函数时要注意要:
函数名对大小写敏感,
不要使用系统保留的关键字来定义函数,
通常我们会使用一个事件来调用函数。
常用的系统函数:
eval():"8+9"
会把一个字符串当作javascript语句来执行;
parseInt();
强制进行整型转换
parseFloat();
强制进行浮点型转换

javascript的弹窗:
1、alert警告弹窗,弹出一个包含提示文字的窗口,
2、confirm 弹出一个提示窗口,让用户选择“确定”或“取消”
若点确定返回true,若点取消返回false.
3、prompt();

内置对象:
javascript有很多内置的对象,我们常用的对象包括这样几种:
1:String对象
2:Array对


3:Date对象
4:Document对象 属于DHTML内置对象,也就是动态的HTML。
5:窗体对象 window对象 一般最常用 window.open(url) //新窗口打开一个链接
6:事件对象 Events对象 也属于DHTML内置对象 只有属性,没有方法。
7:history对象
8:location 对象
9:Math对象
10:浏览器对象:Navigator


事件(Event):
onkeydown 某个键盘的键被按下
onkeypress 某个键盘的键被按下或按住
onkeyup 某个键盘的键被松开
onload 某个页面或图像被完成加载
onmousedown 某个鼠标按键被按下
onmousemove 鼠标被移动
onmouseout 鼠标从某元素移开
onmouseover 鼠标被移到某元素之上
onmouseup 某个鼠标按键被松开
onreset 重置按钮被点击
onresize 窗口或框架被调整尺寸
onselect 文本被选定
onsubmit 提交按钮被点击
onunload 用户退出页面


document对象
属性
//title 属性可返回当前文档的标题( HTML title 元素中的文本)。
URL 属性可返回当前文档的 URL。

方法
getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。
getElementsByName() 方法可返回带有指定名称的对象的集合。
getElementsByTagName() 方法可返回带有指定标签名的对象的集合。
write() 方法可向文档写入 HTML 表达式或 JavaScript 代码。
writeln() 方法与 write() 方法作用相同,外加可在每个表达式后写一个换行符。



String()对象
.length属性
返回字符串的个数.
方法
toLowerCace() 将字符串转化成小写
toUpperCase() 将字符串转化成大写
toString(); 返回字符串 $a="helloword"
substr() 截取字符串
substring() 和substr()基本一样,就是他的参数可以为负值。
indexOf() 检测字符串中某一个字符初次出现的位置
lastIndexOf()
检测字符串中某一个字符最后一次出现的位置
split() 方法把字符串分割成数组


Array()对象
.length属性

方法
reverse() 方法用于颠倒数组中元素的顺序。
toString() 方法可把数组转换为字符串,并返回结果
concat() 方法用于连接两个或多个数组。
join() 方法用于把数组中的所有元素放入一个字符串。
splice()方法删除数组中的一个或者N个元素。
sort() 方法用于对数组的元素进行排序

pop() 方法用于删除并返回数组的最后一个元素。
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

location 对象属性

#host 设置或返回主机名和当前 URL 的端口号。
#hostname 设置或返回当前 URL 的主机名。
href 设置或返回完整的 URL。
top.location.href=”url” 在顶层页面打开url(跳

出框架)
self.location.href=”url” 仅在本页面打开url地址
parent.location.href=”url” 在父窗口打开Url地址
this.location.href=”url” 用法和self的用法一致


location 对象方法
reload() 重新加载当前文档。
replace() 用新的文档替换当前文档。

history()对象
history.length 历史记录数
history.back() 返回上一页
history.forward() 前进一页
history.go(num) 前进或后退num页,num为0时表示页面刷新。

Math对象:
方法
random() 方法可返回介于 0 ~ 1 之间的一个随机数
min(x,y) 返回x和y之间的最小值。
max(x,y) 返回x和y之间的最大值。


日期对象。
MyDate=New Date();
getYear(): 返回年数
getMonth():返回当月数
getDate(): 返回当日号数
getDay():返回星期几
getHours():返回小时数
getMintes(:返回分钟数
getSeconds():返回秒数
getTime() : 返回毫秒数

(2)设置日期和时间:
setYear();设置年
setDate():设置当月号数
setMonth():设置当月份数
setHours():设置小时数
setMintes():设置分钟数
setSeconds():设置秒数
setTime ():设置毫秒数

window对象:
方法:
open(url,name,attribute),打开一个新窗口,并且返回一个对象。
url:新窗口的连接
例子:
mywindow=window.open('','test','width=200,height=200');
mywindow.document.write("This is 'myWindow'");

close(object); 关闭一个浏览器对象,
不加参数默认关闭当前窗口。
例子:
window.close(mywindow);

navigator 对象:
appVersion 属性返回浏览器的平台和版本信息。


定时器:
setInterval("function()","timestr");开启一个定时任务,每间隔
一段时间执行一次事件。返回值为此定时器的对象。
关闭方法:clearInterval();

setTimeout("function()","timestr");间隔一段时间执行一个事件,只
执行一次。返回值为此定时器的对象。
关闭方法:clearTimeout();

补充:jacascript 段落注释中间不能嵌套段落注释,
别的注释方式和其他语言相通。



相关文档
最新文档