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等高级编程语言来说不够严格,所以对于它的数据类型和之间的转换很容易混淆,以上仅是个体会,如有错误,欢迎指出

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 2,556评论 1 17
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 836评论 0 0
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,706评论 0 6
  • JS使用技巧专题 1开发技巧 1.1函数使用 1.1.1函数声明方式 JS函数的写法总结 http://blog....
    Kevin_Junbaozi阅读 1,120评论 0 11
  • 【用心感悟生活点滴】樊丹,坚持分享856天,于简阳。 信息化时代,社会的变化进步日新月异,人们也面临适应日益...
    化繁为简fd999阅读 212评论 0 2