• 第二章数据和判定


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

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

    作者:wj704    出处:http://www.cnblogs.com/wj204/   
  • 相关阅读:
    同花顺笔试碰到的一道前端编程题
    闭包会造成内存泄漏吗?
    动态添加和删除节点元素,函数封装
    58同城2018校招前端笔试题总结
    拼多多2018提前批前端笔试总结
    根据字符串字符的个数排序输出
    ES6数组对象新增方法
    【转】浅析BFC及其作用
    《具体数学》学习笔记
    KMP总结
  • 原文地址:https://www.cnblogs.com/wj204/p/3402204.html
Copyright © 2020-2023  润新知