JS数据类型,类型转换

ECMAScript:标准、核心
HTML 标签类型:block、inline、inline-block、table……
JS中的数据类型:数字(Number)、字符串(String)、布尔(boolean)、函数、对象(obj、[]、{}、null)、未定义(undefined)

typeof 判断数据类型

  • typeof操作符的操作数可以是变量也可以是数值字面量。
var i = 100;
 alert( typeof i );           // number
 alert(typeof 100);        //number
var s = ' miaov ';
 alert( typeof s );               // string
 alert( s.length );               // 7
 alert( s.charAt(3) );        // 'a'
var b = true;               // 布尔值:true  false
 alert( typeof b );       // boolean
var arr=[5,6,9,3];
alert(typeof(arr));     //object
var obj = document;
 alert( typeof obj );             // object  物体、东西、对象
var n = null;
 alert( typeof n );            //object(从逻辑角度看,null值表示一个空对象指针,所以会返回object)
var a;
alert(typeof a);   //undefined

数据类型转换-number

  • JS中有三个函数可以将非数值转化为数值:Number(),ParesInt(),ParesFloat()。
  • 区别:Number()可以用于任何数据类型,而另外两个函数专门用于把字符串转换成数值

Number()函数的转换规则如下

  1. 如果是boolean值,true和false会分别转化为1和0;
    var a=true;
    alert(Number(a));  // 1
  1. 如果只是数字值,只是简单的传入和返回。
    var a=100;
    alert(Number(a));  // 100
  1. 如果是Null值,则会返回0;
var a = null;
// alert( Number(a) );             // 0
  1. 如果是undefined,函数,json则都返回NaN;
var json = {};
// alert( Number(json) ); //NaN
var u;
// alert( Number(u) );  //NaN
var a3 = function (){ alert(1); };
// alert( Number(a3) );           // NaN
  1. 如果是字符串,遵循下列规则:
  • 如果字符串中只包含数字(包括正负,并且前导的零会被忽略),则将其转换为十进制数值
var a = '+100';
 alert( a+100 );      // '100100'
 alert( Number(a) );          // 100
  • 如果字符串中包含有效的浮点数,则将其转化为对应的浮点数
    var a=2.123;
    alert(Number(a)); //2.123
  • 如果字符串中包含有效的十六进制格式,如'0xf',则将其转化为相同大小的十进制数值
 var a=0xAD;
 alert(Number(a));  //173
  • 如果是空字符串(不包含任何字符),则将其转换为0;
var a1 = '    ';
// alert( Number(a1) );     // 0
  • 其他格式的字符串将会被转化为NaN;

parseInt()转换规则如下:

  1. 它会忽略字符串前面的空格,直至找到第一个非空字符,如果第一字符不是数字符号,则返回NaN。
  2. 空字符串也会被转换为NaN。
  3. 从第一数字字符开始解析,直到解析到最后一个数字字符或者遇到一个非数字字符则会停止解析,相应的小数点也不会被解析。
  4. 当需要解析进制数时最好在函数中添加第二个参数:转换时使用的基数(即多少进制的数字)。
var num=parseInt('0xAF',16) //175

parseFloat()的与parseInt()的一些区别:

  1. 它解析的第一个小数点有效,第二个小数点无效。
  2. 前导0会被忽略,所以只能解析十进制
//特殊的一些转换
var a=parseFloat('0xAF');  //0
var b=parseFloat('3.125e7'); //31250000

你可能感兴趣的:(JS数据类型,类型转换)