5. 数字扩展

进制表示

es6 中,二进制的表示方法都是以 0b 开头
console.log(0b111101110); // 494

es6 中,八进制的表示方法都是以 0o 开头
console.log(0o767); //503

数值判断

判断是否为有效数值

  console.log("15", Number.isFinite(15)); //trueconsole.log("NaN", Number.isFinite(NaN)); //falseconsole.log("1/0", Number.isFinite(1 / 0)); // false

判断是不是数
  console.log("NaN", Number.isNaN(NaN)); //falseconsole.log("0", Number.isNaN(0)); //true

判断是否整数
  console.log(Number.isInteger(25)); //trueconsole.log(Number.isInteger(25.0)); //true 25.0 等于 25console.log(Number.isInteger(25.1)); //false 25.1 不等于 25console.log(Number.isInteger("25")); //false  参数必须是数

数的边界
  console.log(Number.MAX_SAFE_INTEGER); //9007199254740991console.log(Number.MIN_SAFE_INTEGER); //-9007199254740991

判断安全范围内的整数

  console.log(Number.isSafeInteger(10)); //trueconsole.log(Number.isSafeInteger(10.4)); //false

返回一个小数的整数部分

  console.log(Math.trunc(4.11)); //4console.log(Math.trunc(4.9)); //4

判断一个数 正数 负数 零

  console.log(Math.sign(-5)); //-1console.log(Math.sign(0)); //0console.log(Math.sign(5)); //1console.log(Math.sign("ffd")); //NaN

计算立方根

  console.log(Math.cbrt(-1)); //-1console.log(Math.cbrt(8)); //2console.log(Math.cbrt("gf")); //NaN

6. 数组扩展

数组转换

一组数据转换成数组
  let arr = Array.of(3, "sd", 7, 9, 11);console.log("arr=", arr); //[3, "sd", 7, 9, 11]

类数组转真数组
  // 把元素集合转义成数组let p = document.querySelectorAll("p");let pArr = Array.from(p);pArr.forEach(item => {console.log(item.textContent);//ES6//慕课网//学习教程
  });//映射关系console.log(Array.from([1, 3, 5], item => item * 2));// [2,6,10]

填充数组

  console.log([1, "a", undefined].fill(7)); // [7,7,7]// 后两个参数 起始位置 终止位置console.log(["a", "b", "c", "d", "e"].fill(7, 1, 3)); //['a',7,7,'d','e']

打印值

返回数组索引

  for (let index of ["1", "c", "ks"].keys()) {console.log(index);//0//1//2}

返回索引与值, 配合解构使用
  for (let [index, value] of ["1", "c", "ks"].entries()) {console.log(index, value);//0 '1'//1 'c'//2 'ks'}

从第 3 个位置开始读到 4 之前,放到第 0 个位置
console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4)); //[4, 2, 3, 4, 5]

找到符合条件的第一个数值
console.log([1, 2, 3, 4, 5, 6].find(item => item > 3)); //4

找到符合条件的第一个索引

console.log([1, 2, 3, 4, 5, 6].findIndex(item => item > 3)); //3

这个数组中是否包括 目标值
  console.log([1, 2, NaN].includes(1)); //trueconsole.log([1, 2, NaN].includes(NaN)); //true

7. 函数扩展

参数

参数默认值
  function test(x, y = "world") {console.log("默认值", x, y);}test("hello"); //hello world

是取得参数中的值

  let x = "test";function test2(x, y = x) {console.log("作用域", x, y);}test2("kaka"); // kaka kaka

如果参数中没有x 就朝外取值
  let x = "test";function test2(c, y = x) {console.log("作用域", c, y);}test2("kaka"); // kaka test

rest 参数, 扩展运算符

  // 把一些离散的值转换成了数组function test3(...arg) {for (let v of arg) {console.log("rest", v);// 1// 5// a
    }}test3(1, 5, "a");// 把数组转成离散的值console.log("a", ...[1, 2, 4]); //a 1 2 4

箭头函数

  // this 绑定// es5: 函数被调用时的对象// es6: 定义时候的对象let arrow = v => v * 2;console.log(arrow(3)); //6let arrow2 = () => 5;console.log(arrow2()); //5

尾调用

  function tail(x) {console.log("tail", x);}function fx(x) {return tail(x);}fx(123); // 123

8. 对象扩展

简洁表达

  let o = 1;let k = 2;let es5 = { o: o, k: k };let es6 = { o, k };console.log(es5);console.log(es6);// {o: 1, k: 2}
let es5_method = {hello: function() {console.log("hello es5");}};let es6_method = {hello() {console.log("hello es6");}};es5_method.hello();es6_method.hello();

属性表达式

  let a = "b";let es5_obj = {a: "c"};// 中括号包起变量,a 是变量,变量的值是blet es6_obj = {[a]: "c"};console.log(es5_obj); //{a: "c"}console.log(es6_obj); //{b: "c"}

新增api

  // 判断相等,等同 ===console.log(Object.is("abc", "abc")); //true// 引用类型 引用两个不同地址console.log(Object.is([], [])); //false// 浅拷贝 属性有限制 ,拷贝自身属性的地址console.log("拷贝", Object.assign({ a: "a" }, { b: "b" })); //{a: "a", b: "b"
let test = { k: 123, o: 456 };for (let [key, value] of Object.entries(test)) {console.log([key, value]);// ["k", 123]  // ["o", 456]

扩展运算符 (es7特性, 支持度不高)

  //扩展运算符 (es7特性)//let { a, b, ...c } = { a: "test", b: "kill", c: "ddd", d: "ccc" };// c= {//   c:ddd,//   d:ddd// }

9. symbol 类型

symbol 作用

提供一个独一无二的值
  //声明let a1 = Symbol();let a2 = Symbol();console.log(a1 === a2); //false  // 设定key值,同key 的值是相等的let a3 = Symbol.for("a3");let a4 = Symbol.for("a3");console.log(a3 === a4); //true

使用场景

  // 同键值不会造成冲突let a1 = Symbol.for("abc");let obj = {[a1]: "123",abc: 345,c: 456};console.log(obj); //{abc: 345, c: 456, Symbol(abc): "123"}/*** 对象中有用到symbol作key值时,for in 和 let of 是拿不到属性的*/for (let [key, value] of Object.entries(obj)) {console.log(key, value);// abc 345// c 456
  }for (let key in obj) {console.log(key, obj[key]);// abc 345// c 456
  }// 这时候就需要一个api了,得到一个数组Object.getOwnPropertySymbols(obj).forEach(item => {console.log(obj[item]);// 123 (只取到symbol)
  });// 所有都要那到要使用Reflect, 返回symbol变量作为key值的属性Reflect.ownKeys(obj).forEach(item => {console.log(item, obj[item]);// abc 345// c 456// Symbol(abc) '123'});

转载于:https://www.cnblogs.com/anqwjoe/p/11138464.html

ES6解析彩票项目学习记录(二)相关推荐

  1. GitHub mall项目学习(二) mall-admin

    GitHub mall项目学习(二) mall-admin 本文主要介绍mall-admin后台系统 mall ├── mall-common -- 工具类及通用代码 ├── mall-mbg -- ...

  2. 大数据之spark学习记录二: Spark的安装与上手

    大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...

  3. 01-Flutter移动电商实战-项目学习记录

    01-Flutter移动电商实战-项目学习记录 一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常 ...

  4. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  5. VUE项目学习(二):学习项目文件结构

    VUE项目学习(二):学习项目文件结构 VUE项目结构: index.html:主页,项目入口 App.vue:根组件 main.js:入口文件 router文件夹下的index.js:路由配置文件 ...

  6. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  7. HTML学习记录二:html标签(五):超链接标签

    HTML学习记录二:html标签(五):超链接标签 一.超链接标签写法 二.超链接标签的属性 三.超链接的锚点用法 四.链接分类 一.超链接标签写法 在 HTML 标签中, 标签用于定义超链接,作用是 ...

  8. 卡狗项目学习记录 - Churning Customers Prediction

    卡狗项目学习记录-Churning Customers Prediction 1. 数据预处理 1.1 导入需要的包 1.2 读取数据集 1.3 数据分析 1.3.1 Customer_Age 1) ...

  9. Openzeppelin学习记录二:utils模块(SafeMath.sol+SafeCast.sol)

    Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol) Openzeppelin学习记录 2.Utils 2.1 Math 2.2 Safe ...

最新文章

  1. 再谈Linux修改应用程序获得root权限
  2. oracle sql语句
  3. Burnside引理与Pólya定理
  4. vs2008使用技巧
  5. 战神笔记本电脑自带access吗_笔记本电脑卡顿不要急着换,这几个方法,让你的电脑流畅爆表...
  6. centos配置mysql
  7. 编译驱动的Makefile解析
  8. 操作系统实验报告-系统调用
  9. python做逻辑回归r2_利用python实现逻辑回归
  10. SiteMesh2-示例工程
  11. 高数上册下册答案详解第七版高数同济7版上册下册答案高等数学答案吧
  12. 字典攻击——彩虹表攻击与防御
  13. 戴尔计算机网卡驱动程序,dell戴尔网卡驱动如何安装
  14. 电子元器件选型——功率电感
  15. 关于动物识别论文的阅读笔记——青鳉鱼的个体识别和“面部反转效应”
  16. C++ 全局变量 静态全局变量 傻傻分不清
  17. Fabrie:PPT有风险,设计师请停用
  18. vmware workstation14永久激活密钥
  19. 推荐系统中learning to rank(学习排名)
  20. 文字细化算法matlab,细化算法matlab

热门文章

  1. 你真的了解JavaScript的Promise吗?
  2. Spring, MyBatis 多数据源的配置和管理
  3. mysql启动报错解决-1
  4. 自定义控件:属性为控件需要注意的地方
  5. 初学者,你应当如何学习C++以及编程-转
  6. vxworks源码剖析- 数据结构篇一(双向链表)-转
  7. 1043. 输出PATest(20)-PAT乙级真题
  8. c++ string 末尾追加char字符
  9. Oracle 用户,角色,权限的sql语句
  10. 到底谁应该对软件开发的质量负责?