JS基础知识
JavaScript
数据类型转换
把其它数据类型转换为number类型
isNaN 、Number、parseInt、parseFloat在进行加减乘除数学运算的时候
true->1 false->0
''->0 '12'->12 '12px'->NaN/12 "candy"->NaN
null->0 undefined-NaN
{} /^$/ function(){}->NaN
[]->''->0
//=>引用数据类型转换数字
//通过toString方法把数组转换为字符串,然后在调用Number把字符串转换为数字
JS中的数学运算
+、-、*、/ 加减乘除除了加法有特殊性,其余的运算符都是数学运算,也就是遇到非数字类型,需要把其转换为number在进行运算
加法的特殊性:
在遇到字符串的时候,+不是数学运算,而是字符串拼接,只要不遇到字符串就是数学运算
1-"1"->0;
10*null->0;
10/undefined ->NaN
10*[10]->100
1+"1"->"11"
null+"1"->"null1"
//=>字符串拼接:是把其它的值转换为字符串然后在拼接
(toString)
//=>其他数据类型的toString是直接的把值用单(双)引号包起来即可,只有对象的有特殊性,对象.toString()==="[Object Object]"
1+null+undefined+[]+"candy"+null+undefined+[]+10
/*
1+null->1
1+true->2
2+undefined->NaN
NaN+[]->NaN+""->"NaN"
"NaN"+"candy->"NaNcandy"
...
NaNCandynullundefined10
*/
将其它数据类型转换为布尔类型
Boolean、!、!!在条件判断的时候,也是转换为布尔类型,然后验证条件的真假
只有
0、NaN、空字符串、null、undefined
五个转换为false,其余的都转换为true
[]->true
-1->true
if(box){
//=>首先把box变量存储的值获取到,转换为布尔类型,如果为true条件成立,反之不成立
}
if(3+"3px"){
//=>条件成立
}
if(3-"3px"){
//=>条件不成立:3-"3px"=NaN
}
在使用==进行比较的时候
在使用==进行比较的时候,如果左右两边数据类型不相同,浏览器会默认转换为相同的类型,然后在比较(===不会这样操作)
//=>对象和对象:比较的是空间地址,不是相同的空间,结果肯定是false
[]==[]->false
var a={};
var b=a;
a==b;=>true;
//=>对象和数字:把对象转换为数字
[]==0->true
({})==NaN->false //NaN和自己不相等和其它任何值都不相等
//=>对象和字符串:把两边都转换为数字比较的
[]==""->true
//=>对象和布尔:把两边都转换数字
[]==true//->0==1->false
[]==false//->0==0->true
![]==false//->![]把数组变为布尔在取反=false->false==false->true
//=>字符串和数字:字符串转换为数字
//=>字符串和布尔:都转为数字
//=>布尔和数字:布尔转换为数字
//=>规律:两个等号比较,左右两边数据值的类型不一样,浏览器会把两边的类型都转换为数字然后再比较,但是null和undefined除外
null==undefined->true
nul===undefined->false
null==0 ->false //null以及undefined和其它任何值都不相等
Math中的常用方法
数学函数:但是它是对象数据类型的typeof Math->"object"
Math对象中给我们提供了很多常用操作数字的方法
console.dir(Math)
查看所有方法
abs
Math.abs:取绝对值
Math.abs(12)->12
Math.abs(-12)->12
ceil/floor
Math.ceil:向上取整
Math.floor:向下去整
Math.ceil(12)->12
Math.ceil(12.1)->13
Math.ceil(12.9)->13
Math.ceil(-12.9)->-12
Math.ceil(-12.1)->-12
Math.floor(12)->12
Math.floor(12.1)->12
Math.floor(12.9)->12
Math.floor(-12.9)->-13
Math.floor(-12.1)->-13
round
Math.round:四舍五入
Math.round(12.3)->12
Math.round(12.5)->13 正数中5包含在向上
Math.round(-12.3)->-12
Math.round(-12.5)->-12 负数中5包含在向下
Math.round(-12.51)->-13
random
Math.random:获取(0,1)之间的随机小数
for(var i=0;i<100;i++){
console.log(Math.random());
}
//=>需求:获取[0,10]之间的随机整数
Math.round(Math.random()*10)
//=>需求:获取[1,10]之间的随机整数
Math.ceil(Math.random()*10))
//=>需求:获取[3,15]之间的随机数
Math.round(Math.random()*12+3)
获取[n,m]之间的随机整数Math.round(Math.random()*(m-n)+n)
max/min
Math.max(12,23,25);->25
Math.min(12,23,25);->12
PI
Math.PI->3.141592653589793
pow/sqrt
Math.pow:获取一个值的多少次幂Math.sqrt:开平方
Math.pow(10,2)->100
Math.sqrt(100)->10
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。