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
1、检测数据类型:typeof 运算符
var a = 'miaov';
alert( typeof a );
alert( a.length );
alert( a.charAt(2) );
var b = true;
alert(typeof b);
var p = document.getElementsByName('p');
alert(p);
var d = document;
alert( typeof d );
d.abc = 123;
alert(d.abc);
alert(document.abc);
var arr = [ 1,2,3,4 ];
alert(typeof arr);
arr.push(5);
alert(arr.length);
arr.abc = 'abcde';
alert(arr.abc.charAt(3));
2、null
var oNull = null;
alert( typeof oNull );
var li = null;
var fn = function (){ alert(1); };
alert( typeof fn );
alert( fn );
fn();
function fn1(){
}
alert( fn1 );
// 函数:所有的函数,不调用,不执行!
// 函数名称就等于整个函数
// 函数名+()
var abc;
alert(typeof abc);
alert( abc );
// 未定义是一种状态:程序出错
alert(parseInt("010"));
alert(parseInt('sdf123'));
alert(parseInt('123 333'));
alert(parseInt('010',8));
var a = '100';
alert( a+10 );
alert( Number(a)+10 );
var n = null;
alert(typeof(n));
if(n){
}else{
}
var b = '200px';
var b2 = '200.98px';
alert(parseInt(b));
alert(parseInt(b2));
var c = '23.45元';
alert(parseFloat(c));
var num = 40.678;
if(parseInt(num) == parseFloat(num)){
}
else{
}
不强制类型转换(隐式类型转换):
alert('200'-1);
var a = '2';
a++;
alert(a); //
alert('3' > '2000000');
alert('2'==2);
alert('2'===2);
alert(!true);
alert(!100);
if(!2345){
}else{
}
var aaa = '200';
// 列出你所知道的所有方法,把字符串转数字:
Number(aaa);
parseInt(aaa);
parseFloat(aaa);
aaa-0
aaa*1
aaa/1
NaN 的出现:表示你的数字类型转换失败!
alert(Number('w'));
alert(typeof Number('w') );
alert(typeof(Number('w')));
alert(NaN+1)
var aaa = '';
alert( parseInt('') );
在一堆字符串里找数字的方法:
for(var i=0; i<a.length; i++){
}
//判断是否为数字且不为 :NaN,parseFloat(arr[i]) == arr[i]
//判断是数字,且为NaN :typeof(arr[i]) == 'number' && isNaN(arr[i])
isNaN() : 用来判断某个值是否为 number
alert( isNaN(250) );
alert( isNaN('ABC') );
isNaN 的实现原理:Number('ABC') => NaN
喜欢 NaN => true
alert( isNaN('') );
alert( isNaN([]) );
alert( isNaN(null) );