zoukankan      html  css  js  c++  java
  • JS_高程3.基本概念(2)

    1.ECMAScript数据类型

      5种简单数据类型,分别是:

        Undefined

        Null

        Boolean

        Number

        String

      1种复杂数据类型:

        Object

    (1)typeof操作符——检测给定变量的数据类型

      “undefined”——未定义

      “boolean”——布尔值

      “string”——字符串

      “number”——数值

      “object”——对象或是null

      “function”——函数

    eg:

    1  <script type="text/javascript">
    2     var m="hello!"
    3     alert(typeof(m));
    4     alert(typeof m);
    5     alert(typeof 93);
    6     </script>

    出现3个提示框,分别是:

    注意:(1)以上例子说明,typeof操作符的操作数可以是变量,也可以是数值字面量。

       typeof是一个操作符,而不是一个函数,所以例子中的圆括号可以使用,但不是必需的。

         (2)调用 typeof null返回的是 “Object” ,因为特殊值null被认为是空的对象引用。

    2.Undefined类型

      undefined类型只有一个值,即特殊的undefined。使用var声明变量但没有进行初始化赋值时,这个变量的值就是undefined。

      eg:

      

    1 var message;
    2 alert(message);

      结果图:

      上面的例子只是声明了变量message,但没有对其进行初始化。

    注意:

      (1)未经初始化的变量,其默认值为undefined,与没有进行定义的变量是不一样的。

    eg:

    1 var message;
    2     alert(message);
    3     alert(age);

    第三行会出现错误:

      

       运行以上代码,第一个警告框会显示变量message的值,即undefined。第二个警告框由于传递给alert()函数的是没有声明的变量age,则会导致一个错误。

      对没有声明的变量,只能执行一项操作,即使用typeof操作符检测其数据类型(对没有声明的变量调用delete不会导致错误,但是这样做没有实际意义,而且在严格模式下会导致错误。)

      (2)使用alert()函数,输出的变量的值,已经定义声明,但是没有进行初始化的变量的值为“undefined”,使用typeof操作符输出的变量的数据类型,已经定义声明,但是没有进行初始化的变量的数据类型也是“undefined”。

      (3)对没有定义的变量使用typeof操作符同样也是返回undefined。

      eg:

    1 var message;
    2     alert(typeof message);
    3     alert(typeof age);

    上面的代码会出现两个警告框,都是显示“undefined”。

    3.Null类型

      null类型的数据只有一个值,就是null,null值表示一个空对象的指针,当用typeof操作符检测null时,会返回“object”。

    eg:

    1 var car=null;
    2     alert(typeof(car));

      如果定义的变量是准备来保存对象的,最好将该变量初始化为null而是不其他的值。实际上undefined值是派生自null值的,因此ECMA-262规定它们的相等性测试要返回true。

    alert(null==undefined);

        

    注意:

      尽管null和undefined有这样的关系,但是它们的用途是完全不同的。我们知道,在一般情况下,都没有必要把一个变量的值显式地设置为undefined,但是null却不同,只要意在保存对象的变量还有真正保存对象,就应该明确地让该变量保存为null值。

      这样做不仅可以体现null作为空对象指针的惯例,也有助于进一步区分null和undefined。

    4.Boolean类型

      (1)该类型的值:true和false。(这两个值和数字值不是一回事,因此true不一定等于1,false不一定等于0。)

      注意:Boolean类型的字面值是区分大小写的。

      (2)ECMAScript中所有类型的值都有与Boolean值等价的值。要将一个值转化为其对应的Boolean值,可以转换函数Boolean(),至于放回的值是true还是false,取决于要转换至的数据类型及其实际值。

    注:各种数据类型及其对应的转换规则,详见高程P26.

    5.Number类型

      (1)八进制字面值的第一位必须是0,当数字序列超过0~7时,前导0会被忽略,后面的数字将当做十进制数值解析。

        八进制子在严格模式下无效的,会导致Javascript引擎抛出错误。

      (2)在进行算术运算时,八进制和十六进制都会被转换成十进制数值。

      (3)浮点数:该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

        注意:由于保存浮点数值需要的内存空间是保存整数的两倍,因此ECMAScript会不失时机地将浮点数转换为整数来保存。显然,如果小数点后没有任何数字,这个数值可以作为整数来保存,如果浮点数值本身就是一个整数(eg:1.0),那么该值也会被转换为整数。

      (4)默认情况下,ECMAScript会将小数点后面带有6个零以上的浮点数值转换为以e表示法表示的数值。

      (5)浮点数的最高精度为17位小数,但是在进行计算时其精度远不如整数。

        eg:0.1+0.2的结果不是等于0.3,而是等于0.30000000000000004.

    用代码测试情况如下:

     var a=0.1,b=0.2;
        if(a+b==0.30000000000000004){
            alert("You got 0.3");
        }

    结果:

    当代码为:

     var a=0.1,b=0.2;
        if(a+b==0.3){
            alert("You got 0.3");
        }

    时,测试无法通过

    因此,一般不要测试某个特定的浮点数值。

      

      

  • 相关阅读:
    减小war包体积
    监视oracle执行的SQL语句(正在执行,已执行,执行性能查看)
    SqlServer性能检测和优化工具使用详细
    redis 超时失效key 的监听触发
    ActiveMQ实现延迟消息队列
    TDDL:来自淘宝的分布式数据层
    灰度发布
    Jenkins 定时构建和Poll SCM的区别
    SpringBoot 配置文件application.properties配置参数替换或者注入的几种方式
    HTML5基础 label 为input标签添加标记
  • 原文地址:https://www.cnblogs.com/LinSL/p/6134892.html
Copyright © 2011-2022 走看看