zoukankan      html  css  js  c++  java
  • Js基础知识梳理系列(01):数据类型

      在JavaScript中,有5种简单数据类型(也称基础数据类型):Undefined,Null,Boolean,Number,String。还有一种复杂数据类型:Object。

      1-如何检查数据类型?Typeof or instanceof?

      typeof:类型,类别

      typeof操作符(不是函数方法)用来检测数据的类型,返回一个表名类型的字符串。

    var a ; console.log( typeof a );//undefined,变量初始化但是未定义;
    console.log( typeof true );//boolean,布尔值;
    console.log( typeof ‘uncle-yang’ );//string,字符串
    console.log( typeof 123 );//number,数值
    var b = new Object(); console.log( typeof b );//object,本身是个对象
    var c = null; console.log( typeof c );//object,null被认为是一个空的对象引用 var arr = [1,2,3];console.log( typeof arr );//object,数组的实质是对象 function demo(){};console.log( typeof demo );//function,函数

      

      Instainceof:实例,例子

      instanceof 用于判断一个变量是否某个对象的实例

    var a=new Array();
    console.log(a instanceof Array);//true
    console.log(a instanceof Object);//true,这是因为Array是object的子类
    /*-----*/
    //声明函数
    function test(){};
    //实例化对象
    var a = new test();
    console.log(a instanceof test)//true

      问A:typeof a = ‘object’,那么a可能是一个什么值?

      答A:首先a是一个对象,a可能是一个已经声明的对象,也可能是一个值为null的空指针,也可能是一个数组。

      

      问B:typeof的劣势在哪儿?如何检查数组?

      答B:typeof在检查基础数据类型的时候,没有什么疑问,但是检查对象的时候无法确定,这个对象到底是否是那种类型。检查一个对象是否为数组,可以用 instanceof 来检测。如

    var arr = [1,2,3];
    console.log( arr instanceof Array )//true。

      另外,在ECMAScript5中新增Array.isArray( arr )方法,用于检查变量是否为数组。支持该方法的浏览器:IE9+,Firefox4+,Safari5+,Opera 0.5+,chrome

    var arr = [1,2,3];
    console.log( Array.isArray( arr ) )//true

      2-undefinde类型

      undefinde: 不明确的;未下定义的

      Undefinde类型只有一个值,那就是undefined。在变量声明以后,但是未赋值,那么这个变量的值就是undefined。

    var a;
    console.log( typeof a );//undefined,声明为赋值
    console.log( typeof c );//undefined,未声明的变量也会返回undefined

      

      3-number类型

      number:数值

      浮点数值,就是该值中必须包含一个小数点,且小数点最后必须有一位数字。因为保存浮点数值需要的空间是整数的两倍,所以ECMAScript会不失时机的将浮点数值转化为整数值。如:

      

    var a = 1.;//小数点后面没有值,会直接转化成1
    var b = 1.00;//小数点后的值为都是0,会直接转化为1

      浮点数值的最高精度是17位小数,但是在经行算术计算的精度远远不如整数,如

    var a = 0.1, b = 0.2;
    console.log( a + b )//结果为0.30000000000000004,

      造成上例问题的原因是:舍入误差。这是是用基于IEEE754数值的浮点计算的通病,ECMAScript并非独此一家,其他语言也存在这个问题。因此在编程的过程中,不要判断某个特定的浮点数值来做一些事情。

      保留小数点后n位:number.toFixed( n );如

    console.log( 3.141592657.toFixed( 3 ) )//3.142

      

      NaN类型

      NaN:not a number,非数值

      任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括本身。在js中,

    console.log( 1 / 0 )//Infinity,正无穷
    console.log( -1 / 0 )//-Infinity,负无穷
    console.log( 0 / 0 )//NaN
    console.log( 0 / -0 )//NaN
    console.log( 0 / NaN )//NaN

      判断一个变量是否是非数值,用到的方法是isNaN();

    console.log( isNaN( NaN  ) );//true
    console.log( isNaN( 123  ) );//false
    console.log( isNaN( "123" ) );//false,字符串“123”可以转化成数值123
    console.log( isNaN( "abc" ) );//true
    console.log( isNaN( true  ) );//false,true可以转换成数值1

      

      数值转换。Number()、parseInt()、parseFloat();

    console.log( Number(123) );//132
    onsole.log( Number("123") );//数字123
    console.log( Number(10.11) );//10.11
    console.log( Number(true) );// 1
    console.log( Number("abc") );// NaN

      Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。

      4-string

      string:字符串

      字符串的特点:ECMAScript中的字符串是不可变的,字符串一旦创建,他们的值就不能改变。如果要改变字符串的值,那么首先要销毁原来的字符串,然后再用另一个包含新字符串填充该变量。

      5-类型的强制转换

      ECMAScript中可用的3种强制类型转换如下: 
      Boolean(value)——把给定的值转换成Boolean型; 
      Number(value)——把给定的值转换成数字(可以是整数parseInt()或浮点数parseFloat()); 
      String(value)——把给定的值转换成字符串。 

      6-进制转换

      在js中,可以利用toString()函数进行数值的进制转换。 num.toString( n );n为2,8,16等任意有效进制格式。如

    var num = 3;
    console.log( num.toString(2) );//11

     

  • 相关阅读:
    资源积累二
    给页面减减肥!
    需求决定设计,设计来源于需求
    项目经理是这样当的
    项目经理之我思员工能动性
    实现性能目标的几种方法
    大项目中项目经理的作用(转自csdn)
    atlas学习实践系列之三(远程web services调用)
    窥视设计模式之组合模式(composite)
    FredCK.FCKeditorV2和vs2005中RequiredFieldValidator配合使用的问题
  • 原文地址:https://www.cnblogs.com/xxyy1122/p/5198585.html
Copyright © 2011-2022 走看看