一、数组
数组是js中复合类型的一种,定义数组的语法分三步:声明、创建、初始化。基本语法:
1)var 数组名 ;
数组名 = new Array(数组长度);
数组名[0] = 元素值;
数组名[1] = 元素值;
…
2)var 数组名 = new Array(数组长度);
数组名[0] = 元素值;
数组名[1] = 元素值;
…
3)var 数组名 = [元素1值,元素2值,…];
但是,js中的数组区别于java中的数组:
①js中数组长度可变,于是限制数组的长度毫无意义。
②数组中的元素可以是不同的数据类型。如arr[0]=1;
arr[1]=”abc”;
示例代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>数组</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
//声明 、创建、 初始化
//1.
/* var arr;
arr = new Array(3);
arr[0] = 1;
arr[1] = 2;
document.write(arr[0]); */
//2.
/* var arr = new Array(3); */
//3.
/* var arr =[1,2,3]; */
//与java中数组不同,长度可变,元素类型可以不一致
var intArr = new Array();
intArr[0] = 1;
intArr[1] = "abc";
intArr[2] = undefined;
for(var i = 0 ; i<intArr.length;i++){
document.write(intArr[i]+"<br/>");
}
</script>
</head>
<body>
数组结束
</body>
</html>
运算符
普通的运算符与java中的运算符差异不大,如+-*/%><>=等等,唯一不同的是,js中有严格等于===,==表示运算符两边的值相等返回true,===表示只有运算符两边的值相等且数据类型相同才返回true。
另外还有三个运算符:instanceoof,typeof,constructor.
instanceof与java中的运算符相同,a instanceof b即判断a类是不是b类或b的子类的实例;
typeof用于查看变量的数据类型,用法:①typeof 变量名;②typeof 变量值;③typeof(变量名);
变量值和返回数据类型对应关系如下:
变量值- 返回数据类型
数值型值- number
字符串值 - string
布尔型值 - boolean
null值 - object
undefined- undefined
数组 -object
函数 -function
对象 -object
constructor用来获得对象的构造函数,可以精确判断对象的类型,类似于java中的class对象,任何类型.constructor都是对象。返回结果
function 类型名{
[native code]
}
判断返回的类型是不是数组用:类型名.constructor==Array
示例代码:
<script type="text/javascript">
// ===严格等于,只有两边数据类型和值都相等,才返回true
// == 判断值是否相等
//alert(0==false);
//alert("aaa"==="aaa");
//1.typeof
/* var a = 10;
alert(typeof a);
alert(typeof "abc"); */
//2.instanceof
/* var arr =[1,2,3];
alert(arr instanceof Array); */
//3.constructor
var a = 123;
alert(a.constructor);
</script>
流程控制
流程控制分三种:顺序、分支、循环。
基本与java中的一致,不同的是switch语句中的switch条件和下面匹配条件,使用的是严格等于,只有类型和值全相等,才能匹配上。
顺便讲解prompt输入框,prompt(“请输入:”,”默认值”);//第一个值是提示输入内容,第二个值是输入框中的默认值。
点取消返回null.
js中的增强for循环
作用:1.访问数组 2.访问对象的属性
语法:
1.for (var i in 数组名 ){
document.write(数组名[i]);
}
其中i是下标
2.for(var i in 对象名){
document.write(对象名[i]);
}
其中i是属性名,对象名[i]是属性值。
示例代码:
<script type="text/javascript">
var a = "123";
//必须严格等于,才能匹配上
switch(a){
case 123:
document.wirte('值相等');
case "123":
document.write('严格等于');
}
</script>
prompt输入框
<script type="text/javascript">
/* var a = 1;
document.write(a); */
var s = prompt('请输入:','数');
//必须严格等于才能匹配
switch(s){
case "1":
document.write(s);
break;
case "2":
document.write(s);
break;
case "3":
document.write(s);
break;
}
</script>
增强的for循环
<script type="text/javascript">
//访问数组
/*var s = [1, 2, 3];
for(var i in s) {
document.write(s[i] + "<br/>");
}*/
//访问对象的属性
for (var i in screen) {
document.write(i+"="+ screen[i]+"<br />");
}
</script>
异常处理
程序员主动产生一个异常:throw new Error(“自定义异常”);
抛给浏览器,如果不处理,程序中止,不再继续往下执行。
处理异常的方式只有try-catch一种。
示例:
<script type="text/javascript">
try{
throw new Error("自定义异常");
}catch(e){
document.write(e.message);
}finally{
document.write('<br/>'+'finally');
}
alert('here');
</script>
与java中处理异常的区别:
①js中只有一个异常类Error,无须在定义函数时声明抛出该异常,所有没有throws关键字。
②catch里的异常实例无需声明类型,因为只有Error.
③只有一个Error类,只能有一个catch块。
④获取异常信息描述是通过e.message而不是通过getMessage()方法;
对象和内建类
JS中数据类型中复合类型除了数组、函数,还有类。JS类似于java也有对象和类的概念,它可以以类似java面向对象编程的方式来编写类、创建对象,或使用现有类生成对象,访问对象的属性和方法,但是JS不是面向对象的。面向对象语言的三大基本特征:封装、多态、继承,JS中没有多态的概念,它是基于对象的语言,在JS中如果笼统的说一切都是对象,类也属于对象的一种,这是JS和java的区别。我们这里主要讲如何使用JS提供给用户的现有类,也可以叫内建类,它是可以直接使用的。
常用的内建类有:
①Object
Object是所有类的基类。
②Number
var numberObject = new Number(123);
③String
var str = new String(“aaa”);
④Math
alert(Math.random());//产生0.0-1.0之间的随机数。
Math.ceil();//执行向上舍入,即他总是将数值向上舍入为最接近的整数。
Math.floor();//执行向下舍入,
Math.round();//执行标准舍入,四舍五入为最接近的整数
⑤Date
var dataObj = new Date();
dataObj.getFullYear();//获得当前年
dataObj.getMonth();//获得月,获得0-11分别对应1-12月,所有我们要把得到的数加1的得到实际的月数。
dataObj.getDate();//获得日,
dataObj.toLocaleString();//获得格式化好的日期
dataObj.toLocaleTimeString();//获得格式化好的时间。