JS数据类型总结整理

JS 数据类型:
      字符串、布尔、数字、对象(element、{json}、[]、null)、函数、未定义

1、检测数据类型:typeof 运算符  ,   charAt 根据字符串下标来获取子字符串
var a = 'miaov';
alert( typeof a );          // string
alert( a.length );          // 5
alert( a.charAt(2) );    // charAt 根据字符串下标来获取子字符串

var b = true;                  // 布尔值  true      false
alert(typeof b);      // boolean

var p = document.getElementsByName('p');
alert(p);                  //[object HTMLCollection]

var d = document;
alert( typeof d );            // object
d.abc = 123;
alert(d.abc);                      //123
alert(document.abc);        //123

var arr = [ 1,2,3,4 ];
alert(typeof arr);            // object
arr.push(5);
alert(arr.length);  //5
arr.abc = 'abcde';
alert(arr.abc.charAt(3));  //d
2、null  是对象。    null初始化一个对象,'' 字符串为空。
var oNull = null;
alert( typeof oNull );            // object
var li = null;                          // null 不能添加自定义属性!

var fn = function (){ alert(1); };
alert( typeof fn );                  // function
alert( fn );            // function (){ alert(1); };
fn();                            //1

function fn1(){
      alert(2);
}
alert( fn1 );    // function fn1(){
                          alert(2);
                                      }
// 函数:所有的函数,不调用,不执行!
// 函数名称就等于整个函数
// 函数名+()  就让函数调用了

var abc;
alert(typeof abc);            // undefined
alert( abc );                              // undefined
// 未定义是一种状态:程序出错

            Number();
                  从整体上进行转换(尽量转成数字)
                  转不成功:NaN
           
            parseInt();
                  从左到右,一位一位进行转换
                  转不成功:NaN
                 
                  注释:只有字符串中的第一个数字会被返回。
                  注释:开头和结尾的空格是允许的。
                  提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。

            parseFloat();
                  从左到右,一位一位进行转换(认得小数)

                  注释:开头和结尾的空格是允许的。
                  提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
                  提示:如果只想解析数字的整数部分,请使用 parseInt() 方法。

alert(parseInt("010"));      //10
alert(parseInt('sdf123'));  //NaN
alert(parseInt('123 333'));  //123
alert(parseInt('010',8));  //8  转换为8进制

var a = '100';
alert( a+10 );            // 10010
alert( Number(a)+10 );  //110

  alert(Number(''));                  // 0    Number()从整体上进行转换(尽量转成数字)
  alert(Number(false));            // 0
  alert(Number([]));                  // 0
  alert(Number(null));            // 0
 
  alert(parseFloat(''));                  // NaN 
  alert(parseFloat(false));            // NaN
  alert(parseFloat([]));                  // NaN
  alert(parseFloat(null));            // NaN

var n = null;      //null初始化一个对象,' ' 字符串为空
alert(typeof(n));  // object
if(n){
      alert('真');
}else{
      alert('假');  //假
}

var b = '200px';
var b2 = '200.98px';
alert(parseInt(b));  //200
alert(parseInt(b2));  //200

var c = '23.45元';
alert(parseFloat(c));  //23.45

var num = 40.678;
if(parseInt(num) == parseFloat(num)){  //判断是否为整数
      alert(num + '是整数');
}
else{
      alert(num + '是小数');
}

不强制类型转换(隐式类型转换):
           
                                  200+'px'        =>            '200px'
                  - * / %      '200'-1            =>            199
                  ++ --            '2'++            =>            3
                  > <            '3' > 2            =>            true
                  (如果> <的两边都是字符串,则不会发生类型转换)
                  ==                  '2'==2                  =>            true
                  (把数字2变成字符串2,再进行比较,比较的是最终的值)
                                  !100                  =>            false
                  (!把类型变成布尔值)

alert('200'-1);  //199
var a = '2';
a++; 
alert(a); //  3

alert('3' > '2000000');      // true

alert('2'==2);          //true
alert('2'===2);      // false    全等判断,先判断类型,再判断值
alert(!true);        // false
alert(!100);          // false(100 => true)
if(!2345){
      alert('真');
}else{
      alert('假');      //假
}

var aaa = '200';
// 列出你所知道的所有方法,把字符串转数字:
Number(aaa);
parseInt(aaa);
parseFloat(aaa);
aaa-0
aaa*1
aaa/1

NaN 的出现:表示你的数字类型转换失败!
      特征:
            1、NaN 在布尔值的表现:false
                  if(Number('w')){
                        alert('真');
                  }else{
                        alert('假');  //假
                  }
            2、NaN 与自己不相等
                        var a = Number('w'); 
                        alert(a == a);  //false

alert(Number('w'));            // NaN : not a number (不是个数字)
alert(typeof Number('w') );      // number          typeof运算符的写法
alert(typeof(Number('w')));      // number          typeof方法的写法
alert(NaN+1)      //NaN

var aaa = '';
alert( parseInt('') );            // NaN

在一堆字符串里找数字的方法:
for(var i=0; i<a.length; i++){
      if(parseInt(a.charAt(i)) == parseInt(a.charAt(i))){    //判断转化之后为number且不为NaN
            str += a.charAt(i);
      }
}
//判断是否为数字且不为 :NaN,parseFloat(arr[i]) == arr[i]
//判断是数字,且为NaN :typeof(arr[i]) == 'number' && isNaN(arr[i])

isNaN() : 用来判断某个值是否为 number
alert( isNaN(250) );                  // false
alert( isNaN('ABC') );              // true

isNaN 的实现原理:Number('ABC') => NaN
喜欢 NaN => true

alert( isNaN('') );                        // false      Number('') => 0
alert( isNaN([]) );                        // false      Number([]) => 0
alert( isNaN(null) );                    // false        Number(null) => 0



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值