js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型(Object)..


ECMAscript是什么:

其实我们天天写的js代码就是由ECMAscript来定义的,它是一套标准,一个核心,比如js中的定义变量var不能写成vao,它除了规定js的语法之外还规定了js中的数据类型

HTML标签的类型:block、inline、inline-block、table。。。意义在于根据不同的类型可以设置不一样的css,不是那个类型要转才能用。

JS中的数据类型:
比如var i=666;要写给浏览器看,浏览器如何分辨了。。。其实js(ECMAscript)中提供了一个小小的运算符type of(类型 判断),就是用来判断数据类型的,比如alert(typeof i);弹出i的数据类型。

引号’’或者””

只要是引号就是字符串的类型,知道是个字符串就可以获取字符串的长度。

1
2
3
4
5
var h="string ";(其中带有空格也算字符串)
alert(h.length);

alert(h.charAT(3));弹出i
charAT()方法是根据字符串的下标获取子字符串的下标(0,1,2,3);

布尔值:

1
2
3
4
5
比如var b=true;  (只有两个值true or false
可以alert(typeof b);
比如
if(6<66){}就是true
if(666<66){}就是false

object对象:

js中对象是一组属性与方法的集合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var obj=window;
alert(typeof obj);window对象

var obj=document
alert(typeof obj);文档对象

1constructor属性:构造函数属性,可确定当前对象的构造函数。
var o = new Object();
console.log(o.constructor == Object);//true
var arr = new Array();
console.log(arr.constructor == Array);//true

2、hasOwnProperty(propertyName):判断属性是否存在于当前对象实例中(而不是原型对象中)。

.....等等等等。

数组:

1
2
3
4
5
var arr=[1,2,3,4];
alert(arr.length);
arr[2]=345;
alert(arr);
数组也是一个object。

json:

1
2
3
4
5
6
var json={name:'hardy',age:18};
alert(json.name+'年年'+json.age+'岁'+)
json也是一个object对象

json只是平时的命名,可以写成
var abc={name:'hardy',age:18};

null:

1
null类型被看做空对象指针,前文说到null类型也是空的对象引用。只有一个值,即null值,所以,在你 用typeof 操作符去检测null类型的值时,结果是object类型。

Undefined:

这个就厉害了,你们经常定义了一个那啥,最后发现她Undefined…

1
2
3
4
5
6
7
8
9
var Sex = "女";
var mygirlfriend;
alert(Sex);//女
alert(mygirlfriend);//undefined...
alert(girlfriend);//error,变量girlfriend没有声明

alert(typeof Sex);//string
alert(typeof mygirlfriend);//undefined
alert(typeof girlfriend);//undefined,变量girlfriend没有声明

数据转换

字符串变成数字:
ECMascript给我们提供了一个方法Number();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var h='100';
alert(h+100)//100100
alert(Number(h)+100)//200

var h='00100';
alert(Number(h))//100


var h='';或者 var h=' ';
alert(Number(h))//0

var h=true;或者 var h=false;
alert(Number(h))//1或者0

var h=[];var h=[''];
alert(number(h))//0

var json={abc:123};
alert(number(json))//0

var h=null
alert(number(h))//0

转不出来的东西弹出NaN

parseInt方法:

1
2
3
4
5
6
7
8
9
10
11
var h="100px;"
alert(parseInt(h));
转化成字符串
工作原理:出现非数字截断,最后弹出100,所以即使是
var h="100px12345678;"
alert(parseInt(h));
弹出的还是100

var h="13.14元"
alert(parseInt(h));
弹出13,.后面的被截断

parseFloat方法:

1
2
3
4
5
6
var h="13.14元"
这时候需要用parseFloat();
alert(parseFloat(b));
弹出13.14
但是如果是var b="13.1.4元"
弹出13.1

parseFloat方法:

1
2
3
4
5
6
7
8
9
10
var h="13.14元"
这时候需要用parseFloat();
alert(parseFloat(b));
弹出13.14
但是如果是var b="13.1.4元"
弹出13.1
alert(parseFloat(b));可以写成
alert(parseFloat(b,10));
alert(parseFloat(b,16));
就是按10进制或者16进制转。

1、parseInt与number的区别,number全部转换,parseInt从左到右依次
2、parseInt与parseFloat的区别,parseInt不认识小数点
3、parseFloat认识一个小数点

于是可以用parseInt和parseFloat判断一个数是整数还是小数

1
2
3
4
5
6
var num='5.20';
if(parseInt(num)===parseFloat(num)){
alert("整数");
}else{
alert("小数");
}

需要说的是一个谜一样的数:NaN,它是非数字类型,为什么说是谜一样的数字呢,其实…..只是为了耍酷。

它的特点:
① 涉及到的 任何关于NaN的操作,都会返回NaN
② NaN不等于自身。

什么是NaN?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NaN:not a number(不是数字的数字类型)
var a=Number('hhh');
alert(typeof (a));
一旦写程序遇到了NaN,肯定进行了非法运算操作
alert('200px'-100);

if(a){
alert('真');
}
else{
alert('假');
}
//假
特性:NaN是个假货

NaN与自己都不相等
alert(a===a)//false

js中稀奇古怪的隐式类型转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
显示类型转换(强制类型转换):
number()
parseInt()
parseFloat()

隐式类型转换:
-*/%可以让字符串操作之后变成数字
alert('200'-3);//197(数字)
alert('200'+3);//2003(字符串)

var a='10';
a++;
alert(a);//11(数字)

数字比较与字符串比较
alert('10'>9);//true
字符串比较是一位一位的进行比较
alert('100000000000'>'9');//false

!取反
把右边的数据类型转成布尔值
alert(!true);//false
alert(!ok);//false
alert(!100);//false

==
alert('2'==2)//true
对地址进行比较,最后true
alert('2'===2);(三个等号更严谨)

隐式转换与显式转换都有一个共性,就是转化不成功的时候弹出NaN。

1
2
alert(Number('....'));
alert('....'-9);

isNaN()

1
2
3
4
5
6
7
8
9
10
11
isNaN:is not a number 是不是不是一个数字(不是数字)
(它天生烦数字)
alert(isNaN(250))//false
alert(isNaN('hh'))//true

isNaN();
可以用于判断某些值是不是数字

alert(isNaN(function(){alert(1);}));

isNaN内部是先通过Number进行转换之后才确定烦不烦数字,只要是number转换出来是数字,就false,所以isNaN只是讨厌数字但是不讨厌NaN

isNaN应用

1
2
<input type='text' id="text">
<input type='button' id="btn" value='测试当前数据类型'>
“从html中直接获取的值(xxx.value)都是string类型”
“从html中直接获取的值(xxx.value)都是string类型”
“加一条if语句,用isNaN判断数据类型”
“加一条if语句,用isNaN判断数据类型”