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. 经理人必须抛弃的十个习惯思维
  2. NetBeans 时事通讯(刊号 # 55 - May 06, 2009)
  3. 线性代数笔记:汉克尔矩阵(Hankel matrix)
  4. NeHe OpenGL课程 网址整理
  5. 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)
  6. 前端学习(3020):vue+element今日头条管理--创建路由和配置路由
  7. 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
  8. Python面向对象中的self到底是什么?
  9. 浅谈,JavaScript 运行机制和Event Loop
  10. Alarm:IT界朋友请珍惜你的身体[转贴]
  11. 幼儿园数学目标_幼儿园数学教育的总目标包括哪些
  12. 无法使用计算机名访问共享,局域网内无法用计算机名访问共享的解决办法
  13. Grown Up Digital: How the Net Generation is Changing Your World
  14. 梦境历险记-解说动漫电影
  15. 登陆成功页面5秒跳转
  16. SQL数据导入导出语句大全[英文部分比较全面]
  17. 多边形套索及魔棒工具
  18. 关于MAC装双系统的一些体会
  19. 基于ZigBee的路灯灯控故障检测系统设计
  20. dell15-5559_Dell Mini 9-实用开发人员评论

热门文章

  1. 51php服务器稳不稳定,百度经验:两步搞定PHP-FPM优化,让服务器更平稳
  2. uboot加载linux内核加载那些内容,uBoot和Linux内核中涉及到的几个地址参数的理解...
  3. 20200729:力扣199周周赛题解(下)
  4. linux mint下安装vnc,VNC远程连接Linux mint桌面
  5. sqlserver复制表的结构、内容到另一个数据库
  6. mysql case when 使用
  7. redis服务端的maxclient和最大连接空闲时间设置
  8. es中的高效文件读取方式
  9. Proxmark3 Easy Gui 4.0 5.0 5.1加强版免费获取啦最新编译2019/5/10
  10. [vb]SendMessageA函数