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]->1001+"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)->12Math.ceil(12.1)->13Math.ceil(12.9)->13Math.ceil(-12.9)->-12Math.ceil(-12.1)->-12Math.floor(12)->12Math.floor(12.1)->12Math.floor(12.9)->12Math.floor(-12.9)->-13Math.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

js基础知识学习(二)相关推荐

  1. JS基础知识学习(一)

    JS基础知识 前端开发常用的浏览器 谷歌浏览器(chrome):Webkit内核(v8引擎) 火狐浏览器(firefox):Gecko内核 欧朋浏览器(opera):Presto内核 IE浏览器:Tr ...

  2. 权证基础知识学习(二)

    六.创设人应当持续关注行权履约担保品的状况,确保行权专用证券账户和行权专用资金交收账户具备足额行权履约担保品. 被质押.司法冻结或存在其他权利瑕疵的标的证券或资金,不得用于权证创设的行权履约担保. 七 ...

  3. js基础知识(二十五)--DOM查询的其他方法、获取元素的后代和子元素

    一.DOM查询的其他方法 在document提供了一些直接获取元素的方法 document.body获取到页面的body元素 document.documentElement获取页面html中的根元素 ...

  4. 物联网竞赛-基于CC2530寄存器开发-基础知识学习

    基于CC2530寄存器开发-基础知识学习 一.C语言基础知识学习 二.单片机基础知识学习 三.CC2530数据手册的使用 四.常用到的寄存器或函数 1.常用到的寄存器 2.常需要用到的宏.自定义的函数 ...

  5. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  6. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

  7. (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】

    JS基础知识三(作用域和闭包) 提问 作用域 自由变量 闭包 this 提问 this的不同应用场景,如何取值 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个a标签,点击的时候弹出对 ...

  8. uniapp 基础知识学习

    uniapp 基础知识学习 uniapp 基础知识学习 [uniapp 介绍](https://uniapp.dcloud.io/README) 有哪些uni-app的作品 uni-app的社区规模 ...

  9. Vue基础知识总结(二):进阶篇

    Vue基础知识总结(二):进阶篇 1.0 MVVM模式 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式. MVVM模式将页面,分层了 M .V.和VM , ...

最新文章

  1. LambdaMART的源码分析:一(MART:回归树)
  2. Java中四种访问修饰符的区别
  3. rnn按时间展开_一文搞懂RNN(循环神经网络)基础篇
  4. 【ClickHouse】ClickHouse 同步 MySQL 数据库
  5. Sikuli -- 创新的图形化编程技术
  6. python绘制风玫瑰图_python绘制风向玫瑰图和污染物玫瑰图
  7. android vplayer 开源,万能视频播放器VPlayer评测:国内唯一真正硬解码
  8. 最新超好看Nteam官网程序源码+全解移除授权
  9. 30分钟完成pandas入门
  10. 为你留存最美好的岁月——汉印CP4000L体验评测
  11. UltraEdit (UEStudio)使用技巧
  12. 运维开发团队技能与效率提速利器:运维+低代码
  13. License Code of Jigloo序列号、注册码,可能是通用的呵呵
  14. SAP 如何打Note
  15. java 多重继承的困境
  16. 预失真算法matlab实现,2013-全国研究生数学建模B题-seleh模型预失真MATLAB仿真代码...
  17. 用windows“记事本”创建一个文本文件(hamlet.txt),其中每行包含一段英文。试读出文件的全部内容,并判断:(1)该文本文件有多少行?(2)文件中以大写字母开头的有多少行?
  18. vb.net程序可以在触摸屏上运行么_海泰克触摸屏维修故障排除维修技巧
  19. 轻松集齐五福,还有花花,原来你要扫的福字都在这里!
  20. 请问怎样在亚马逊美国站卖东西?怎样收款?接到单打什么快递?请问亚马逊卖家开店具体怎样操作?

热门文章

  1. php定时备份mysql,Windows服务器中PHP+MySQL设置定时备份
  2. mysql服务remove失败_《MySQL数据库》MySql简介、下载与安装
  3. python object类_Python中一切皆对象,这个对象究竟是什么?
  4. 软件工程 c java的联系_软件工程—WC功能实现 (JAVA)
  5. jquery bind button 点击事件
  6. Proxmark3 Easy Gui 4.0 5.0 5.1加强版免费获取啦最新编译2019/5/10
  7. 从零学ELK系列(六):Docker安装Logstash(超详细图文教程)
  8. FastDFS环境搭建
  9. 微软要放弃Edge了?传微软正在构建基于Chromium的浏览器
  10. 谁说Dota2赢了人类的AI太水?连比尔·盖茨都啧啧称赞了