数据类型转换::
实际运算的时候 turn = 1 false = 0 NaN(数据类型是num): not a Number (结果不是一个数字)
检测数据类型:tpyeof
数据类型转换
1.隐式转换: 除了+以外其他所有符号都可以转成数字类型 缺点:转换类型不明确
+(正号) 也可以实现隐式转换
2.显示转换:直接告诉系统该转什么类型
转换方法:
number(数据) :其他类型转数字类型
boolean(数据) :0,空字符串,nan,undefined ,null 转为false,其余都是true
函数的声明和调用
function是执行特定任务的代码块 优势:精简代码方便使用
语法:
function 函数名(){
函数体
}
函数名() 函数调用 必须调用才能执行 可以多次调用
函数名:使用小驼峰命名法函数的参数
形参:理解为 在这个函数内声明的变量
实参:理解为 给这个变量赋值
函数的返回值
return:将函数的结果 返回给函数调用
函数 没有return 函数调用默认underfined
retuen 后面没有值(没有返回结果) 返回也是undefined
函数里面return后面的代码不执行,
内置函数:js封装好的函数,我们直接调用就可以
对象: 是一种数据集合 属性一般是信息(名词) 一般是成对(键值对)出现的
方法之间用逗号(,)隔开
对象的方法 方法一般是功能(动词)
由 方法名和函数组成 中间是: (冒号)
多个属性之间用,(逗号)隔开
方法是依附在对象中的函数
console.log(typeof null); 返回的是对象类型
undefined 未定义类型
内置对象
Math(数学对象) :
以下常用!!!!!!!!!!!!!!!!!!!
Math.random() 生成[0,1) 生成0-1之间的随机数 :包括0,不包括1
1.有没有参数 2.功能 3.返回值
无值 生成0-1之间的随机数 返回0-1中间的随机数
Math.PI :π
Math.ceil() 向上取整
Math.floor() 向下取整
Math.max() 求最大值
Math.min() 求最小值
Math.pox(x,y) 幂运算 求x的y次幂
Math.abs() 绝对值
/生成n-m之间的随机数
Math.floor(Math.random()*(m-n +1)) +n
比较运算符: 比较运算符 结果为boolean类型
== 左右两边值相同 === 左右两边值和类型都相等
!= 不等 左右两边值不相同
!== 全不等 左右两边值和类型都不相等
比较运算符注意事项
nan除了自己 不等于任何值 isnan可以判断是不是非数字和非纯数字
尽量不要比较小数 有精度问题
console.log(0.04 == 0.2*0.2);
不同类型之间会发生隐式转换
比较运算符中 使用更多的是 === !==
逻辑运算符 用来解决多重条件判断
短路 :只存在与&&和|| 中,当满足一定条件会让右面代码不执行
逻辑短路 && 就是找假
逻辑短路 || 就是找真
流程控制
三大流程控制:顺序 分支 循环
顺序结构:代码从上到下执行 中间代码出错下面不执行
赋值运算符 :对变量进行赋值的运算符 = 经常用的+= =
一元运算符 自增符号 ++ 作用让变量的值+1
自减符号-- 作用让变量的值-1
++1 和 1++ 区别 ++1 先自增再参与运算
1++ 运算再自增
自减同理
运算符优先级 :掌握运算符优先级,能判断运算符执行的顺序
数组:按顺序保存数据的数据类型
基本使用
声明语法:
let 数组名 = [数据1,数据2,数据3]
从0开始,以此类推 编号也叫下标或索引
数组可以存储任意类型的数据
取值语法
数组名[下标]
数组的长度: length
向数组动态添加数组元素 数组名[索引] = 值
遍历数组
把数组中每一个元素都访问到,一般会用for循环
数组也是对象 数组返回的数据类型是对象类型
访问对象里面的属性值 对象名.属性名 对象名['属性名']
let obj = {}
for(let key in obj) {
console.log(key);
}