目录
数值扩展
Number.EPSILON
Number.EPSILON
是JavaScript表示的最小精度- EPSILON属性的值接近与 2.220446049250313080472633361816E-16
- 可以用该属性去解决因浮动数之间的计算误差而产生的判断不精准
function equal(a ,b){
Math.abs(a - b) < Number.EPSILON ? true : false;
}
0.1 + 0.2 === 0.3 //false
equal(0.1 + 0.2, 0.3)//true
Number.isFinite
- 检测一个数值是否为有限数
console.log(Number.isFinite(100));//true
console.log(Number.isFinite(100 / 0));//false
console.log(Number.isFinite(Infinity));//false
Number.isNaN
- 检测一个数值是否为NaN
console.log(Number.isNaN(123));//false
console.log(Number.isNaN(NaN));//true
Number.parseInt 和Number.parseFloat
- 在ES6中将parseInt和parseFloat这两个单独的函数放到Number下作为两个方法,方便查阅文档
Number.parseInt ()
可以将字符串转为一个整数Number.parseFloat()
可以将字符串转为一个浮点型数
console.log(Number.parseInt("123pxfff"));//123
console.log(Number.parseFloat("3.141343pxsfsfs"));//3.141343
Number.isInteger
- 判断一个数是否为整数
console.log(Number.isInteger(10));//true
console.log(Number.isInteger(2.5));//false
Math.trunc
- 将数字的小数部分抹除掉
- 在负数部分可以和
Math.floor
进行对比一下
//Math.trunc
console.log(Math.trunc(2.55));//2
console.log(Math.trunc(-2.34));//-2
console.log(Math.trunc(-2.89));//-2
// Math.floor
console.log(Math.floor(-2.34));//-3
console.log(Math.floor(-2.89));//-2
Math.sign
- 判断一个数到底为正数 负数 还是零
console.log(Math.sign(12));//1
console.log(Math.sign(0));//0
console.log(Math.sign(-12));//-1
模块化
- 模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来
模块化的好处
- 防止命名冲突
- 代码复用
- 高维护性
模块化语法
- 模块功能主要由两个命令构成:export和import
- export命令用于规定模块的对外接口
- import命令用于输入其他模块提供的功能
三种模块暴露数据语法方式
分别暴露:
先创建一个t1.js文件,然后将要暴露的数据前面添加export
export let myName = "心猿";
export let myfunc = () =>{
console.log("我是外部文件引进来的!");
}
然后创建另一个index.html文件或者t2.js文件,使用import导入t1.js的数据
html:
<script type="module">
import * as outName from "./t1.js";
console.log(outName);
console.log(outName.myName);
outName.myfunc();
</script>
js文件:
import * as outName from "./t1.js";
console.log(outName);
console.log(out.myName);
outName.myfunc();
html效果如下:
统一暴露:
let myName = "心猿";
let myfunc = () => {
console.log("我是外部文件引进来的!");
}
// 统一暴露
export {myName, myfunc}
默认暴露:
// 默认暴露
export default {
myName: "心猿",
myfunc(){
console.log("我是外部文件引进来的!");
}
}
通过默认暴露的方式,访问数据需要在加上default
html:
<script type="module">
import * as outName from "./t1.js";
console.log(outName);
console.log(outName.default.myName);
outName.default.myfunc();
</script>
引入模块数据语法
- 通用的导入模式
import * as outName from "./t1.js";
- 结构赋值形式
//分别暴露、统一暴露
import {myName, myfunc} from "./t1.js";
// as修改重名
import {myName as myName2, myfunc} from "./t1.js";
//针对默认暴露
import {default as outName} from "./t1.js";
- 简便形式 针对默认暴露
import outName from "./t1.js";