zoukankan      html  css  js  c++  java
  • JS中的数据类型和转换

    一、JS中的数据类型

            js中的数据类型可以分为五种:number 、string 、boolean、 underfine 、null。

    number:数字类型 ,整型浮点型都包括。

    string:字符串类型,右数字字母字符串以及标点符号组成,必须放在单引号或者双引号中。

    boolean:布尔类型,只有true和false两种值。

    underfine:未定义,一般指的是已经声明,但是没有赋值的变量,如var a;

    null:空对象类型,var a = null,和var a=""有区别;

     

    object:对象,对象就是把一些彼此相关的属性和方法集合在一起构成的一个数据实体,在js常见的有window,document,array等。

    NaN:他是表示不是数字值的特殊值,可以理解为Number的一种特殊类型,只有当在js运算中发生数据类型转换时提示,isNaN()方法是特有的对数据进行判断的 ,如果是数字返回false,不是数字返回true。

    二、数据类型转换

            在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。

    强制转换:

            利用js提供的函数parseInt() ,parseFloat() ,Number(),Boolean()进行数据转换,顾名思义,前两个分别是对数据进行解析转换,前者是整数,后者是浮点数。他们解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,如果第一位就不是数字则返回NaN.Number则是对整体进行判断,是数字返回数字,否则NaN.Boolean()则是对是否存在和真假进行判断进行判断。

    ParseInt():

            parseInt("123");//123

            parseInt("+123");//123

            parseInt("-123");//123

            parseInt("12.3元")//12

            parseInt("abc");//NaN

             parseInt([1,2])//1

             parseInt([1,2,4])//1

              parseInt("  ");//NaN

    该方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,对于含有前导的数则直接进行解析需如下调用:

            parseInt("AA",16);//170

            parseInt("10",2);//2

            parseInt("10",8);//8

            parseInt("10",10);//10

            //含有前导

            parseInt("0xAA")//170        

            //如果二进制数包含前导0,那么最好采用基数2,不然默认以十进制解析

            parseInt("010");   //returns   10 

            parseInt("010",2);//2         parseInt("010",   8);   //returns   8          parseInt("010",   10);   //returns   10 

            parseInt(null)//NaN

    ParseFloat():

            parseFloat("123");//123

            parseFloat("-123");//123

             parseFloat("+123");//123

            parseFloat("12.34");//12.34

             parseFloat("12.35元")//12.35

            parseFloat("12.23.122");//12.23

            parseFloat("av");//NaN

            parseFloat("0xAA");//0

            parseFloat("0110");//110

            parseFloat([1]);//1

            parseFloat([2,3]);//2

            parseFloat([]);//NaN

            parseFloat(null)//NaN

    Number():

            alert(123);//123

            Number("123");//123

            Number("+123");//123

            Number("12.3");//12.3

            alert(12.3元);//false

            Number(true);//1

            Number("12.3.4");//NaN

            Number(" ");//0

            Number("abc");//NaN

            Number([]);//0

            Number([1]);//1

            Number([1,2]);//NaN

            Number(new Object());//NaN

            Number(null);//0

    Boolean():他不会对引号里面的数字进行自动进行转换。

            Boolean(1) ;//true

            Boolean(0);//false

            Boolean("1");//true

            Boolean("0");//true

            Boolean("abc");//true

            Boolean('');//false

            Boolean('   ');//true

            Boolean([])//true

            Boolean([1])//true

            Boolean(null)//false

    而String()则是传入的所有数据类型转换为字符串。

    //和toString()方法的区别是

    typeof String(null)//String

    typeof String(undefined)//String

     隐式类型转换:

        隐式类型转换和java中大不相同,在js中数据类型不严格,没有浮点和整型,这里的隐式类型转换指的是字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,他会自动把字符串转换为数字。转换数字的默认方法是调用Number(),进行加法运算则是将数字看成字符串进行拼接. var x = "123";

    var y = 121;

    alert(x+y);//"123121;

    alert(x-y);//2

    alert(x*y);//14883

    alert(x/y);//1.016528256198346

    alert(x%y);//2

    alert(x>y);//true

    alert(x==y);//false

    alert("123a">y);//false诡异

    js只一中弱类型的脚本语言,语法相对与java等高级编程语言来说不够严格,所以对于它的数据类型和之间的转换很容易混淆,以上仅是个体会,如有错误,欢迎指出!

  • 相关阅读:
    HDU 逃离迷宫 (bfs)
    HDU 2588 GCD (欧拉函数)
    HDU 诡异的楼梯 (bfs)
    oj 二叉树相关
    AVL树代码实现
    用栈实现队列
    redis学习
    15. 三数之和 (思维)
    889. 根据前序和后序遍历构造二叉树(非递归)
    寻找重复的子树(dfs)
  • 原文地址:https://www.cnblogs.com/liqiangchn/p/6915072.html
Copyright © 2011-2022 走看看