zoukankan      html  css  js  c++  java
  • 数据类型(上)

    ECMAScript中有5种简单数据类型:Undefined、Null、Boolean、   Number、和String。还有一个复杂数据类型--Object。

    ECMAScript不支持任何创建自定义类型的机制,所以值都成为以上6中数据类型之一。

    一.typeof操作符


      typeof操作符是用来检测变量 数据类型,对于值或者变量所以typeof
      操作符会返回如下字符串:

             var box;
    	 alert(typeof box);  //box是Undefined类型,值是undefined,类型返回的字符串是undefined
    
            var box=true;
    	 alert(typeof box);  //box是Boolean类型,值是true,类型返回的字符串是boolean
    
    	 var box=100;
    	 alert(typeof box);  //box是Number类型,值是100,类型返回的字符串是number
    
    	 var box='秦肯';
    	 alert(typeof box);  //box是String类型,值是秦肯,类型返回的字符串是String
    
    	 var box=null;
    	 alert(typeof box);  //box是Null类型,值是null,类型返回的字符串是Object
    
             var box={};
    	 alert(typeof box);  //box是Object类型,值是[object Object],类型返回的字符串是Object
          
    	  var box=new Object; 
    	 alert(box);  //box是Object类型,值是[object Object],类型返回的字符串是Object
          
    	  function box(){
    
    	  }
    	 alert(typeof box);  //box是Function类型,值是function box(){},类型返回的字符串是function
    

      typeof 操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:typeof(box),但是 typeof是操作符而非内置函数。


      ps:函数在ECMAScript中是对象,不是一种数据类型。所以,使用typeof来区分function和object是非常有必有的。

    二.  Undefined类型

      Undefined类型只有一个值,即特殊的undefined.在使用var声明变量,但没有对其初始化时,这个
      变量的值就是undefined。
     

    var box;
      alert(box);
    
      var box=undefined;   //没有必要
      alert(box)  
    

     
     
    ps:我们没有必要显示给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为
      undefined;而undefined主要的目的是为了用于比较,ECMAScript第3版之前并没有引入这个值,
      引入之后为了正式区分空对象与未经初始化的变量。

      未初始化的变量与根本不存在的变量(未声明的变量)也是不一样的。

     

     var box;
      alert(age);  //age is not defined
     
      var box;
      alert(typeof box);   //undefined
      alert(typeof age);  //undefined
    

      ps:如果typeof box,typeof age 都返回的undefined.从逻辑上考虑,他们的值,一个是undefined,
       一个报错;他们的类型,可是都是undefined.所以,我们的定义变量的时候,尽量可能的不要只声明,不赋值。

    三.Null 类型

        Null类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引入(指针),而
        typeof操作符检测null会返回object.

        

      var box=null;
      alert(typeof box);
    

     
         如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null,这样,当检测
         null值就知道是否已经变量是否已经分配了对象引用了。
       

     var box=null;
         if(box !=null){
           alert('box 对象已存在!');
         }
    

        
        有个要说明的是:undefined是派生自null的,因此ECMA-262规定对它们的相等性测试返回true.

     alert(undefined==null);  //它们都是空的,所以true
        
     alert(undefined===null);  //数据类型必须相等才可以
    

     由于undefined和null两个值的比较是相等的,所以,未初始化的变量和赋值为null的变量会相等。

    这时,可以采用typeof变量的类型进行比较。但是建议还是养成编码的规范,不忘记初始化变量。

    alert(typeof undefined==typeof null);     //false
    

     四.Boolean类型

    Boolean类型有两个值(字面量):true和false.而true不一定等于1,false不一定等于0,Javascript是区分
    大小写的,True和False或者其他都不是Boolean类型的值。

         var box=true;
         alert(typeof box);   //Boolean
    

      

    虽然Boolean类型的字面量只有true和false两种,都是ECMAScript中所以的类型值都是与这两个Boolean
    值等价的值。要将一个值转换为其对应的Boolean值,可以使用转型函数Boolean()。

    var hello="hello world";
    	var hello1=Boolean(hello);
    	alert(typeof hello1);//Boolean*/
    

      

    上面是一个显示转换,属于强制行转换。而实际应用中,还有一种隐式转换。比如:
    在if条件语句里面的条件判断,就存在隐式转换。

    var hello="";
       if(hello){
         alert("真");
       }else{
         alert("假");
       }
    

      

  • 相关阅读:
    Unity--截取屏幕任意区域
    IOS 提交审核,遇到Missing Push Notification Entitlement 问题。
    VSync Count 垂直同步
    unity3d 自动保存
    首次发布App,In-App Purchase 无法submit for review 问题的解决方案
    国内银行CNAPS CODE 查询
    苹果开发——App内购以及验证store的收据(二)
    C#
    AJAX
    SQLite连接C#笔记
  • 原文地址:https://www.cnblogs.com/linkhtml/p/5790916.html
Copyright © 2011-2022 走看看