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