资讯专栏INFORMATION COLUMN

js基础知识学习(二)

Dean / 3408人阅读

摘要:基础知识数据类型转换把其它数据类型转换为类型在进行加减乘除数学运算的时候引用数据类型转换数字通过方法把数组转换为字符串,然后在调用把字符串转换为数字中的数学运算加减乘除除了加法有特殊性,其余的运算符都是数学运算,也就

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95696.html

相关文章

  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0
  • Vue.js学习系列 —— vuex学习实践笔记(附DEMO)

    摘要:有兴趣的同学可以查看之前发布的文章学习系列一学习实践笔记附学习系列二学习实践笔记附学习系列三和网络传输相关知识的学习实践学习系列四打包工具的使用学习系列五从来聊聊学习系列项目地址项目暂时有点乱,之后会进行整理优化。 上次学习了vue-router的使用,让我能够在各个页面间切换,将页面搭建了起来。这次则要学习vue的状态管理模式——vuex。它类似于redux来应用的全局状态。 注:本...

    DobbyKim 评论0 收藏0
  • 7月份前端资源分享

    摘要:更多资源请文章转自月份前端资源分享的作用数组元素随机化排序算法实现学习笔记数组随机排序个变态题解析上个变态题解析下中的数字前端开发笔记本过目不忘正则表达式聊一聊前端存储那些事儿一键分享到各种写给刚入门的前端工程师的前后端交互指南物联网世界的 更多资源请Star:https://github.com/maidishike... 文章转自:https://github.com/jsfr...

    pingan8787 评论0 收藏0
  • webpack配置学习-开发环境和打包环境执行不同打包

    摘要:分开配置的原因前端项目的开发在开发过程中和上线时需要的依赖是不同的,所以要求使用打包的时候要能够在两种情况下执行不同的配置。在中的属性中配置开发打包命令和上线打包命令,指定不同的配置文件。 分开配置的原因 前端项目的开发在开发过程中和上线时需要的依赖是不同的,所以要求使用webpack打包的时候要能够在两种情况下执行不同的配置。带来的好处是上线的项目不依赖开发下的包,减少生产环境中所需...

    gxyz 评论0 收藏0
  • 写一本关于 React.js 的小书

    摘要:因为工作中一直在使用,也一直以来想总结一下自己关于的一些知识经验。于是把一些想法慢慢整理书写下来,做成一本开源免费专业简单的入门级别的小书,提供给社区。本书的后续可能会做成视频版本,敬请期待。本作品采用署名禁止演绎国际许可协议进行许可 React.js 小书 本文作者:胡子大哈本文原文:React.js 小书 转载请注明出处,保留原文链接以及作者信息 在线阅读:http://huzi...

    Scorpion 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<