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、付费专栏及课程。

余额充值