一:javascript中基本数据类型
在javascript中用来保存数据的基本类型有以下三种
1.字符串:一连串的字符,如 "sm"
2.数字:一个数,包括浮点数
3.布尔值:包含一个真值或假值
有时它们也被称作是基本数据类型,因为它们只保存单个值。还有两个不同的基本数据类型。它们不保存信息,用来对特定的情况给出我们警告。1.空值(null):表示没有数据。
2.未定义(undefined):表示没有定义也没有赋值。当你使用变量的时候,这种类型非常重要。
一.1:不同数据类型的转换
说明:prompt()函数是javascirpt的一个函数,它用来让用户输入一个值然后把它返回到代码中,可用一个变量接受也可不用。。
大多数时候,JavaScript解释器能够识别出我们想使用的数据类型。举个例子,在下面的嗲吗中,解释器明白数字1和2是数字类型,并会对他们做相应处理。
<html> <body> <script type="text/javascript"> var myCalc=1+2; document.write("The calculated number is "+myCalc); </script> </body> </html>
结果显示为:The calculated number is 3
可是如果重写代码,使用prompt()函数允许用户输入自己的数字,我们会得到一个完全不同的结果
<html> <body> <script type="text/javascript"> var userEnteredNumber=prompt("Please enter a number",""); var myCalc=1+userEnteredNumber; var myResponse="The number you entered +1="+myCalc; document.write(myResponse); </script> </body> </html>
如果在提示框中输入2,结果是:The number you entered +1=12
原因:JavaScript解释器不是把这两个数加在一起,而是把它们进行连接操作。这是因为prompt()函数实际上把用户输入的值返回为字符串数据类型,尽管这个字符串中包含数字字符。连接运算发生在这一行:var myCalc=1+userEnteredNumber;
从效果上看,如同我们写成了:var myCalc=1+"2";
可是如果用减法运算符:var myCalc=1-userEnteredNumber;结果会是正确的。
因为减法运算符不适用于字符串数据,所以javaScript能计算出把该数据当做数字来对待时的正确的结果。这个同样适用于*和/运算符。typeof()运算符返回传递给它的参数的数据类型,因此我们可以使用它来看JavaScript解释器正在处理哪种数据类型:
var userEnteredNumber=prompt("Please enter a number","");
document.write(typeof(userEnteredNumber));
这段代码会把字符串写到页面。要确保解释器正杂使用我们想要的数字数据类型,方法就是显示第声明这个数据就是一个数。有三个函数可以用来实现这一目的。
1.Number():设法把括号里的变量值转换成一个数。会拒绝任何包含非数字字符的字符串,例如Number(123.2abc)输出的结果会是NaN.
2.ParseFloat():设法把括号里的值转换成一个浮点数。它从左到右地逐个字符地解析字符串,直到遇到一个字符不能用在数字里。然后它会在那个点停止并把
这个字符串转换成数字。如果第一个字符就不能在数字里使用,返回的结果是NaN(它代表非数字,Not a Number)
3.ParseInt():把括号里的值转换成一个整数,它不用四舍五入,而是把小数部分直接去掉。任何传递到这个函数中的非数字
参数都会被丢掉。如果第一个字符不是+,-或一个阿拉伯数字,则返回的结果是NaN
所以刚刚遇到的那个问题可以用Number()来解决。var userEnteredNumber=Number(prompt("Please enter a number",""));
二:javascript中复合数据类型
复合数据类型有两种:对象和数组。
对象:包含任一个对象(包括浏览器提供的对象)的一个引用
数组:包含一个或多个其他的数据类型。
1.对象
先看下对象数据类型,JavaScript提供了三个对象:String,Date和Math
这三个对象做着三种不同的事情。
Sting对象:存储一个字符串,并提供处理字符串需要的属性和方法
Date对象:存储一个日期,并提供处理它的方法
Math对象:不存储数据,但提供操纵数学上数据的属性和方法
一:String对象
1.隐式创建String对象
<html> <body> <script type="text/javascript"> var myStringInit="abc"; document.write(typeof(myStringInit)); document.write("<br>"); document.write(myStringInit.length); document.write("<br>"); document.write(typeof(myStringInit)); </script> </body> </html>
输出的结果为
string
3
string
javaScript会把这个字符串从基本类型简单地转换成一个临时的String对象,对它使用方法,然后在吧数据类型转换成字符串,所以两次输出的数据类型都是string
2.显式创建String对象
<html> <body> <script type="text/javascript"> var myStringInit=new String("abc"); document.write(typeof(myStringInit)); document.write("<br>"); document.write(myStringInit.length); document.write("<br>"); document.write(typeof(myStringInit)); </script> </body> </html>
这个输出的结果将是
object
3
object
一.1 使用String对象的方法
介绍indexOf()和SubString()方法
<html> <body> <script type="text/javascript"> var myStringInit="my name is wj,helo"; var firstNameIndex=myStringInit.indexOf("w"); var firstName=myStringInit.substring(firstNameIndex); document.write(firstName); </script> </body> </html>
这段代码将输出从w开始的后面所有字符,wj,helo
二.Date对象
<html> <body> <script type="text/javascript"> var originalDate=prompt("Enter a date(Day,Name of the Month,Year)","31 Dec 2003"); var originalDate=new Date(originalDate); var addDays=Number(prompt("Enter number of days to be added","1")); originalDate.setDate(originalDate.getDate()+addDays); document.write(originalDate.toString()); </script> </body> </html>
注意prompt()函数的用法。此代码的运行结果是输入提示时的31 Dec 2003,另有1作为需要增加的天数,那么得到的结果将会是 Thu Jan 01 2004 00:00:00 GMT+0800 (中国标准时间)
三.Math对象
Math对象提供了许多与数学相关的功能,例如获得一个数的平方或者产生一个随机数。Math对象和Date与String对象有两点不同:
1. 不能显示地创建一个Math对象,直接使用它就可以了。
2.Math对象不存储数据,和String与Date对象不同。
介绍下舍入数字和产生一个随机数的方法
1)舍入数字
round():当小数是0.5或者大于0.5的时候向上入一位。
ceil():始终向上舍入,即23.75和23.25都将变成24
floor():始终向下舍入,即23.25和23.75都将变成23
<html> <body> <script type="text/javascript"> var numberToRound=prompt("please enter a number","") document.write("round()="+Math.round(numberToRound)); document.write("<br>"); document.write("floor()="+Math.floor(numberToRound)); document.write("<br>"); document.write("ceil()="+Math.ceil(numberToRound)); </script> </body> </html>
输入23.75后输出结果为:
round()=24 floor()=23 ceil()=24
2)生成一个随机数
用math对象的random()方法,生成一个大于等于0但小于1的随机小数。通常为了利用它,你需要乘以某个数,然后再使用其中的一个舍入方法。Math.random()
2.数组
javaScript允许我们使用一个数组来存储和访问相关的数据。一个数组有点像一行单元格,每个单元格包含一个独立的数据项。一个数组可以存储JavaScript支持的任何数据类型。举例来说,可以使用一个数组来处理用户从中选择的项目列表,或者一组图像坐标,或者一组图片的引用。
Array对象,类似String和Date对象,需要使用new关键字和构造函数来创建。可以在创建一个Array对象时初始化它:var preInitArray=new Array("first item","second item","third item");或者设置它来保存一定数目的数据项:
var preDeterminedSizeArray=new Array(3);
或者创建一个空数组:var anArray=new Array();
可以通过为这些元素赋值来为数组添加新的数据项:anArray[0]="anItem" anArray[1]="anotherItem"
数组对象的方法和属性
1)截取数组的一段
slice()方法对于一个Array对象就如同subString()方法对于一个String对象。只要简单地告诉这个方法你想要截取哪些元素。 slice()方法有两个参数:片段中第一个元素的索引,它包含在这个片段中;最后一个元素的索引,片段中不会包含它。
2)连接两个数组
Array对象的concat()方法运行连接数组。可以使用这个方法把两个或多个数组连接到一起,每个新数组在前面数组结束的地方开始。
<html> <body> <script type="text/javascript"> var arrayOne=new Array("one","two","three","four","five"); var arrayTwo=new Array("ABC","DEF","GHI"); var arrayThree=new Array("John","Paul","George","Ringo"); var joinedArray=arrayOne.concat(arrayTwo,arrayThree); document.write("joinedArray has"+joinedArray.length+"elements<br>"); document.write(joinedArray[0]+"<br>"); document.write(joinedArray[11]+"<br>"); </script> </body> </html>
结果连接后的数组的长度是12个数据项,输出是第一个元素one,和最后一个元素Ringo
3)数组和字符串之间的相互转换
数组转换为字符串示例
<html> <body> <script type="text/javascript"> var arrayThree=new Array("John","Paul","George","Ringo"); var lineUp=arrayThree.join(','); alert(lineUp); </script> </body> </html>
字符串转换为数组示例
<html> <body> <script type="text/javascript"> var lineUp="John,Paul,George,Ringo"; var members=lineUp.split(','); alert(members[0]); </script> </body> </html>
结果可想而知。。。
4)数组排序
<html> <body> <script type="text/javascript"> var lineUp=new Array("John","Paul","George","Ringo"); var sortedArray= lineUp.sort(); document.write(sortedArray[0]+"<br>"); document.write(sortedArray[1]+"<br>"); document.write(sortedArray[2]+"<br>"); document.write(sortedArray[3]+"<br>"); </script> </body> </html>
这个排序的结果将按照严格的数学顺序----ASCII码中的字符编号进行的, 结果显示为:
排好序后还可以使用reverse()方法来把字母表中的最后的字母作为第一个元素来显示。
在JavaScript中进行判定
<html> <body> <script type="text/javascript"> var string1=new String("Apple"); var string2=new String("Apple"); document.write(string1==string2); </script> </body> </html>
这个结果返回的是false,即使两个字符串对象持有相同的字母,他们也不是同一个对象。所以返回的是false
如果你确实需要比较两个对象持有相同的字符串,可以使用valueOf()方法来对数据值进行比较:
<html> <body> <script type="text/javascript"> var string1=new String("Apple"); var string2=new String("Apple"); document.write(string1.valueOf()==string2.valueOf()); </script> </body> </html>
这样返回的结果将是true。
后面的神马条件语句,switch语句,循环语句应该是熟悉不过的了,所以。。。。over这一章。。。
小结:
学到了JavaScript如何处理数据,并明白了许多数据类型:字符串,数字,布尔值以及对象和数组,还有一些特殊的类型,NaN,null和Undefined.
学会数据类型的转换,字符串到数组,数组到字符串。
接触javaScript内置对象:String,Date和Math对象。这些对象提供了许多有用的功能如操纵字符串,日期和数字。 还说明了Array对象,它允许多个数据项存储在单个变量中。
最后的判定,很熟悉的知识,每种编程语言都会用到的逻辑控制等等。。。。