javascript2.docx
《javascript2.docx》由会员分享,可在线阅读,更多相关《javascript2.docx(99页珍藏版)》请在冰豆网上搜索。
javascript2
javaScript概述
JavaScript被用来改进设计、验证表单、检测浏览器、创建cookies,等等等等。
JavaScript是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说InternetExplorer、Mozilla、Firefox、Netscape、和Opera。
什么是JavaScript?
∙JavaScript被设计用来向HTML页面添加交互行为。
∙JavaScript是一种脚本语言(脚本语言是一种轻量级的编程语言)。
∙JavaScript由数行可执行计算机代码组成。
∙JavaScript通常被直接嵌入HTML页面。
∙JavaScript是一种解释性语言(就是说,代码执行不进行预编译)。
∙所有的人无需购买许可证均可使用JavaScript。
JavaScript能做什么?
∙JavaScript为HTML设计师提供了一种编程工具
∙HTML创作者往往都不是程序员,但是JavaScript却是一种只拥有极其简单的语法的脚本语言!
几乎每个人都有能力将短小的代码片断放入他们的HTML页面当中。
∙JavaScript可以将动态的文本放入HTML页面
∙类似于这样的一段JavaScript声明可以将一段可变的文本放入HTML页面:
document.write("
"+name+"
")
∙JavaScript可以对事件作出响应
∙可以将JavaScript设置为当某事件发生时才会被执行,例如页面载入完成或者当用户点击某个HTML元素时。
∙JavaScript可以读写HTML元素
∙JavaScript可以读取及改变HTML元素的内容。
∙JavaScript可被用来验证数据
∙在数据被提交到服务器之前,JavaScript可被用来验证这些数据。
∙JavaScript可被用来检测访问者的浏览器
∙JavaScript可被用来检测访问者的浏览器,并根据所检测到的浏览器,为这个浏览器载入相应的页面。
∙JavaScript可被用来创建cookies
∙JavaScript可被用来存储和取回位于访问者的计算机中的信息。
JavaScript的名字和版本
JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是SunMicrosystem公司(现在Oracle)的注册商标,用来特指网景(现在Mozilla)对这门语言的实现。
网景将这门语言作为标准提交给了ECMA---欧洲计算机制造协会---由于商标上的冲突,这们语言的标准版本改了一个丑陋的名字“ECMAScript”.同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“JScript”。
实际上,几乎所有人都将这们语言叫做“JavaScript”。
在最近10年间,所有的Web浏览器都实现了第3版ECMAScript标准,我们也已经不必再考虑版本号了:
语言标准已经很稳定了,并且被几乎所有的浏览器完整的实现了。
最近ECMAScript第五版本定义了新的语言标准,有的浏览器已经开始实现它了。
正如我们经常将JavaScript简写成JS一样,ECMAScript3和ECMAScript5有时也会简写成ES3和ES5。
当我们提到这门语言本身时,通常所指的语言版本是ECMAScript3和ECMAScript5(ECMAScript4已经开发了数年,但由于太过庞大,从未发布正式版本),有时会看到JavaScript的版本号(比如JavaScript1.5或JavaScript1.8)。
这些是Mozilla的版本号:
版本1.5基本上就是ECMAScript3,后续版本包含了非标准的语言扩展。
最后,JavaScript解释权或者“引擎”也有版本号,比如,Google将它的JavaScript解释权叫做V8。
第二章javaScript基础
2.1变量
在js中可以使用var关键字声明一个变量,可以出现在任何位置。
变量声明后才能使用。
其实不声明也可以使用,只是这样不合逻辑。
注意标识符、关键字问题。
变量名问题
vara=1;varb=1;varc=1;
声明(创建)JavaScript变量
在JavaScript中创建变量经常被称为“声明”变量。
您可以通过var语句来声明JavaScript变量:
varx;
varcarname;
在以上声明之后,变量并没有值,不过您可以在声明它们时向变量赋值:
varx=5;
varcarname="Volvo";
注释:
在为变量赋文本值时,请为该值加引号。
向JavaScript变量赋值
通过赋值语句向JavaScript变量赋值:
x=5;
carname="Volvo";
变量名在=符号的左边,而需要向变量赋的值在=的右侧。
在以上语句执行后,变量x中保存的值是5,而carname的值是Volvo。
向未声明的JavaScript变量赋值
如果您所赋值的变量还未进行过声明,该变量会自动声明。
这些语句:
x=5;
carname="Volvo";
与这些语句的效果相同:
varx=5;
varcarname="Volvo";
重新声明JavaScript变量
如果您再次声明了JavaScript变量,该变量也不会丢失其原始值。
varx=5;
varx;
在以上语句执行后,变量x的值仍然是5。
在重新声明该变量时,x的值不会被重置或清除。
注意:
1.JavaScript是区分大小写的语言,也就是说,关键字、变量、函数名和所有标识符都必须采取一致的大小写形式。
2.JavaScript支持两种格式的注释。
在行尾“//“之后的文本都会被JavaScript当做注释忽略
/*和*/之间的文本也会当做注释,这种注释可以跨行属性
JavaScript保留字:
1.JavaScript中的关键字
breakdeletefunctionreturntypeofcasedoifswitchvarcatchelseinthisvoidcontinuefalseinstanceofthrowwhiledebuggerfinallynewtruewithdefaultfornulltry
2.JavaScript中保留关键字:
classconstenumexportextendsimportsuper
2.2数据类型
对于javascript的变量来说是没有类型的。
变量的类型由它包含的数据决定。
但是JavaScript的数据类型分为两类:
原始类型和对象类型。
JavaScript中的原始值包括数字、字符串、布尔值和两个特使的原始值:
null和undefined。
JavaScript中除了数字、字符串、布尔值、null和undefined之外就是对象了。
对象是属性的集合。
每个属性由“名/值对”(值可以是原始值比如数字、字符串、也可以是对象)构成。
字符串String
数值Number
布尔Boolean
数组Array
对象Object
空(null)
未定义(undefined)
引用Reference
完成Completion。
后三种仅仅作为Javascript运行时中间结果的数据类型,不能再代码中使用。
可以使用typeof(变量名)获取一个变量所包含数据的类型。
vara=1;
varb="1";
alert(typeof(a));
alert(typeof(b));
1.未定义类型
此种类型只有一个变量值undefined。
任何未被赋值的变量都是这个类型。
当尝试读取不存在对象属性或者不存在的数组元素时也会返回undefined
例如:
1.varm;alert(m);显示underfined
2.vara={}alert(a.b);显示undefined
3.vara=[“a”,”b”]alert(a[5]);显示undefined
2.空类型null
仅有一个值null。
初始化时用
可以通过给一个变量赋null值来清除变量的内容。
注意:
null和undefined都没有属性,调用的话会报错
3布尔类型Boolean
4.字符串
单引号或者双引号括起来的字符序列
5.数字类型Number包括整数和小数
特殊的值
1.NaN(notanumber)非数字。
说明某些算术运算(如求负数的平方根)的结果不是数字。
方法parseInt()和parseFloat()在不能解析指定的字符串时就返回这个值
vara=NaN;
alert(typeof(a));
vara="abc";
varb="12.12";
parseInt(a);//返回NaN
parseFloat(b);//返回12.12
parseInt(b);//返回12
使用isNaN()来判断一个值是否是数字。
原因是NaN与所有值都不相等,包括它自己
2.Infinity和-Infinity正无穷大和负无穷大+
Javascript中的算术元素在溢出或被零整除时不会报错.当运算结果超出JavaScript所能表示的数字上限,结果为infinity.同样负数超过了javascript所能表示的最大负数范围为-infinity
vara=Math.pow(2,1000000000);
alert(a);
varb=9/0;
alert(b);
6Object类型
存储一个对象
2.3数据类型转换
到Boolean的转换newBoolean(value)
Undefined总是false
Null总是false
Number0或NaN时为false,其他为true
String字符串为空时(长度为0)为false,其他为true
Object总是true
到数字类型的转换newNumber(value)
UndefinedNaN
Null0
Booleantrue1,false0
String如果可以转换为数字,则返回字符串表示的数字,否则返回NaN
到字符串的转换newString(value)
Undefined“Undefined”
Null“Null”
Boolean“true”“false”
Number具体的值
2.4变量作用域
一个变量的作用域是程序源代码中定义这个变量的区域。
全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的。
然而在函数内部声明的变量只在函数体内有定义。
它们是局部变量,作用域是局部性的。
函数参数也是局部变量,它们只在函数体内有定义。
在函数体内,局部变量的优先级高于同名的全局变量。
varscope="global";
functiontest(){
varscope="local";
returnscope;
}
console.log(test());
尽管在全局作用域编写代码时可以不写var语句,但声明局部变量时则必须使用var语句
varscope="global";
functiontest(){
scope="local";//修改了全局变量
myscope="myscope";//显示的声明了一个新的全局变量
console.log(local);
console.log(myscope);
}
在java中,花括号的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的。
我们称为块级作用域,而JavaScript中没有块级作用域。
JavaScript取而代之的使用了函数作用域,变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。
functiontest(a){
vari=0;
if(a>10){
varj=0;
for(vark=0;k<10;k++){
console.log(k);
}
console.log(k);//k已经定义,输出0
}
console.log(j);//j已经定义,可能为0也可能没有初始化(undefined)
}
JavaScript的函数作用域是指在函数内声明的所用变量在函数体内始终是可见的。
有意思的是,这意味着变量在声明之前甚至已经可用。
JavaScript的这个特性被非正式的称为声明提前,即JavaScript函数里声明的所有变量都被提前至函数体的顶部。
varscope="global";
functiontest(){
console.log(scope);//输出undefined
varscope="local";
console.log(scope);//输出local
}
你可能会误以为函数中的第一行会输出“global”,因为代码还没有执行到var语句声明局部变量的地方。
其实不然,由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是说,在函数体内局部变量遮盖了同名全局变量。
尽管如此,只有在程序执行到var语句的时候,局部变量才会被真正的赋值。
varscope="global";
functiontest(){
varscope;//在函数顶部声明局部变量
console.log(scope);//变量存在,但值是undefined
scope="local";//这里将其初始化
console.log(scope);//输出local
}
2.5运算符
和java基本一样。
多了几个:
1恒等于
严格比较,不会发生数据转换的操作
2==”2”为true
2===“2”为false
2逗号表达式
vara,b,c,d;
d=(a=1,b=a+2,c=b+3);
alert(c);
alert(d);都为6
算数运算符
运算符
描述
例子
结果
+
加
x=y+2
x=7
-
减
x=y-2
x=3
*
乘
x=y*2
x=10
/
除
x=y/2
x=2.5
%
求余数(保留整数)
x=y%2
x=1
++
累加
x=++y
x=6
--
递减
x=--y
x=4
赋值运算符
运算符
例子
等价于
结果
=
x=y
x=5
+=
x+=y
x=x+y
x=15
-=
x-=y
x=x-y
x=5
*=
x*=y
x=x*y
x=50
/=
x/=y
x=x/y
x=2
%=
x%=y
x=x%y
x=0
用于字符串的+运算符
+运算符用于把文本值或字符串变量加起来(连接起来)。
如需把两个或多个字符串变量连接起来,请使用+运算符。
txt1="Whatavery";
txt2="niceday";
txt3=txt1+txt2;
在以上语句执行后,变量txt3包含的值是"Whataveryniceday"。
要想在两个字符串之间增加空格,需要把空格插入一个字符串之中:
txt1="Whatavery";
txt2="niceday";
txt3=txt1+txt2;
或者把空格插入表达式中:
txt1="Whatavery";
txt2="niceday";
txt3=txt1+""+txt2;
在以上语句执行后,变量txt3包含的值是:
"Whataveryniceday"
对字符串和数字进行加法运算
请看这些例子:
x=5+5;
document.write(x);
x="5"+"5";
document.write(x);
x=5+"5";
document.write(x);
x="5"+5;
document.write(x);
规则是:
如果把数字与字符串相加,结果将成为字符串。
比较运算符
运算符
描述
例子
==
等于
x==8为false
===
全等(值和类型)
x===5为true;x==="5"为false
!
=
不等于
x!
=8为true
>
大于
x>8为false
<
小于
x<8为true
>=
大于或等于
x>=8为false
<=
小于或等于
x<=8为true
逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
给定x=6以及y=3,下表解释了逻辑运算符:
运算符
描述
例子
&&
and
(x<10&&y>1)为true
||
or
(x==5||y==5)为false
!
not
!
(x==y)为true
注意:
或运算符||的另外一中用法,varx=a||b;如果a为真则x=a,否则x=b;如果都为true,还是x=a
与运算符&&的另外一种用法,varx=a&&b;如果a真时x=b,a为假时x=a;
举例:
varx=“abc”||123;x=”abc”
varx=“abc”&&123;x=123;
varx=0&&“abc”;x=0;
varx=”abc”||0;x=0;
varbook={title:
"JavaScript",content:
"非常不错"};
varlen=book.title.length;
varlen=book.title2.length;//报错
//这是一种方法
if(book){
if(bool.title2){
len=book.title2.length;
}
}
//这也是一种方法
varlen=book&&book.title2&&book.title.length;
条件运算符(三目运算符)
varx=条件?
value1:
value2;如果条件为true,则x等于value1否则x等于value2
举例:
vara=5>3?
“aaa”:
”bbb”;
2.4语句结构
分号结束,可以没有。
注释和java一样
第三章流程控制和函数
if语句
和java一样
如果希望指定的条件成立时执行代码,就可以使用这个语句。
语法:
if(条件)
{
条件成立时执行代码
}
注意:
请使用小写字母。
使用大写的IF会出错!
实例1
//Writea"Goodmorning"greetingif
//thetimeislessthan10
vard=newDate()
vartime=d.getHours()
if(time<10)
{
document.write("Goodmorning")
}
实例2
//Write"Lunch-time!
"ifthetimeis11
vard=newDate()
vartime=d.getHours()
if(time==11)
{
document.write("Lunch-time!
")
}
注意:
请使用双等号(==)来比较变量!
注意:
在语法中没有else。
仅仅当条件为true时,代码才会执行。
If...else语句
如果希望条件成立时执行一段代码,而条件不成立时执行另一段代码,那么可以使用if....else语句。
语法:
if(条件)
{
条件成立时执行此代码
}
else
{
条件不成立时执行此代码
}
实例
//Ifthetimeislessthan10,
//youwillgeta"Goodmorning"greeting.
//Otherwiseyouwillgeta"Goodday"greeting.
vard=newDate()
vartime=d.getHours()
if(time<10)
{
document.write("Goodmorning!
")
}
else
{
document.write("Goodday!
")
}
If...elseif...else语句
当需要选择多套代码中的一套来运行时,请使用if....elseif...else语句。
语法:
if(条件1)
{
条件1成立时执行代码
}
elseif(条件2)
{
条件2成立时执行代码
}
else
{
条件1和条件2均不成立时执行代码
}
实例:
vard=newDate()
vartime=d.getHours()
if(time<10)
{
document.write("Goodmorning")
}
elseif(time>10&&time<16)
{
document.write("Goodday")
}
else
{
document.write("HelloWorld!
")
}
switch
和java一样
如果希望选择执行若干代码块中的一个,你可以使用switch语句:
语法:
switch(n)
{
case1:
执行代码块1
break
case2:
执行代码块2
break
default:
如果n即不是1也不是2,则执行此代码
}
工作原理:
switch后面的(n)可以是表达式,也可以(并通常)是变量。
然后表达式中的值会与case中的数字作比较,如果与某个case相匹配,那么其后的代码就会被执行。
break的作用是防止代码自动执行到下一行。
实例: