第二章数据和判定

不点 阅读:165 2022-06-06 13:55:53 评论:0

一: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对象,它允许多个数据项存储在单个变量中。

 最后的判定,很熟悉的知识,每种编程语言都会用到的逻辑控制等等。。。。


标签:JavaScript
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号