ECMAScript:JS中的核心,标准;
规定了JS中的语法和数据类型;
--JS中的数据类型--:
typeof :判断数据类型;
1>数字;
var i =100;
alert(typeof i); //number
2>字符串;
var s ='test'; //这里注意,引号中的空格也算一个字符;
alert(typeof s); //string
alert(s.length); //计算字符串中的长度
alert(s.charAt(1)); // 't'
//通过下标找字符串中指定的字符,从0开始计算;
3>布尔值(true false);
var b =true;
alert(typeof b); //boolean
4>函数;
var fn =function (){alert(1);} //匿名函数
fn(); //调用函数
fn; //不写括号,代表的是等号右边的东西;
5>对象(window,document,数据([]),json,null);
var obj = window;
alert(typeof obj); // object 对象
var arr = [1,2,3];
alert(typeof arr); //object
var json ={name:'lay',age:5};
alert(typeof json); //object
alert(json.name); // lay 通过'.'的方式找到对应的
属性值;
var n = null;
alert(typeof n); //object
6>undefined(未定义)
var u;
alert(typeof u); //undefined
--JS数据类型转换--:
强制类型转换(显式类型转换)
方法一:
1>字符串:
var a ='100';
alert(Number(a)); //100
var b =''; //空字符串、空格
alert(Number(b)); //0
2>布尔值
var t = true; //true 1 false 0
alert(Number(t)); //1
3>空数组
var arr =[];
alert(Number(arr)); //0
注:数组里面有一个数就可以转,多个话,会显示
NaN
4>NULL
var n =null;
alert(Number(n)); // 0
5>函数、对象、window、json、undefind强转后都是NaN
var fn =function(){alert(1)};
alert(Number(fn)); //NaN
方法二:
parseInt() 与 parseFloat()
var b ='100px';
alert(parseInt(b)); //100
var b ='100px21321321';
alert(parseInt(b)); //100 遇到p发现不是数字,停止转换;
var b ='+100';
alert(parseInt(b)) //100
var b ='12.35''
alert(parseInt(b)); //12 遇到点发现不是数字,停止转换;
var c ='12.36元';
alert(parseFloat(c)); //12.36
注:
1.parseInt()只转含有数字的字符,其它非数字的,都会返回NaN;
2.parseInt()遇到"+ - * / "和空格,会识别后,去转后面的数。不会直接返回NaN;
3.parseInt(a,b):括号中的参数是有两个的,a代表要转换的字符,b代表是按照几进制转,默认是10进制,比如输入2,就是2进制转换;
**转换步骤:
parseInt会从左到右一个字符一个字符的转,当遇到非数字的字符时,会停止转换,后面的那些全部舍去,即使后面还会有数字,也不会再检查去转了。
隐式类型转换
+ :数字+字符串,变成字符串
例:200+'3' //2003
- * / % :使用字符串与数字可以相运算,变成数字
例:'200' - 3 ; // 得197
++ -- :'10'++ '10'-- 变成数字
例:var a ='10'; a++; //11
>< :注意是数字的比较,还是字符串的比较;
'10'>9 数字与字符串比较,会将字符串转换为数字
再进行比较;
字符串与字符串比较,是一位一位的比较;
例:'10'>'9'
这里是第一位的1和9比,所以返回是false;
! : 取反
== :比较的是值;
===:先比较类型,再比较值;(这个比较严谨)
NsN:not a mumber 不是个数字的数字类型
alert(typeof NaN) ; // number 属于数字类型
注意:一旦写程序中出现:NaN肯定进行了非法的运算操作;
NaN的特性:
1.NaN属于数字类型,但不是数字;
2.NaN在布尔里面是false;
3.NaN===NaN是false; NaN与自己不相等;
isNaN():可以说成,确实不是一个数字;是js自带
的一个方法;
作用:可以判断某些值是不是数字;
返回的是布尔值,是数字返回false,不是数字返回true;
例子:alert(isNaN('250')); //false
内部判断步骤:
先调用Number('250') -->转换成250-->再判断是不是一个数字,最后返回;
说明:从HTML中拿到的内容,类型都是字符串;