Es6-Es13基本语法和使用方法~~~(持续更新中)

122 阅读2分钟

ES6

let

` // 块级作用域,不允许重复声明,没有变量提升
  // 暂存性死区
  let name = "纳西妲";
  function fn() {
    console.log(name);
    let name =
      "局部作用域里调用之后再用let声明变量,就会出现暂存性死区,会报错";
  }
  fn();

  // 不与顶层对象挂钩
  var names = "挂载在window上";
  console.log(window.names); // 挂载在window上

  let notMsg = "不关联";
  console.log(window.notMsg); // undefined`

const

` // 常量
  // 不能重复定义
  // 有块级特性
  // 也有暂存性死区特点
  // 也不与顶层对象挂钩
  const name = 1;

  // 当一个常量为复杂数据类型,是可以改变其属性的
  const obj = Object.freeze({
    name: "张三",
    age: 18,
    child: {
      name: "冻不住",
    },
  });
  // 可以使用冻结方法,让常量不可更改(只能冻住一层)`

解构赋值

` // 数组解构
  let arr = [1, 2, 3];
  let [a, b, c] = arr; // 1,2,3
  let [d, [e, f], g] = [1, [2, 3], 5]; // 1,2,3,5
  let [x = 999] = []; // 999
  let [y = 999] = [666]; // 666
  console.log(y);

  // 对象解构
  const obj = {
    name: "张三",
    age: 18,
    child: { list: [6, 7, 8] },
  };

  let {
    name,
    age,
    child: { list },
  } = obj;
  console.log(name, age, list);

  // 字符串解构
  let { length } = "nan";
  console.log(length); // 3`

模板字符串

` // ${} 大括号里面可以放表达式或变量作为字符串`

字符串与数值的扩展

` let myName = "jack";
  myName.includes("a", 1); // true 判断字符串是否包含某个字符

  myName.startsWith("j", 0); // true 以...开始

  myName.endsWith("j", 1); // true 以...结尾

  myName.repeat(3); // jackjackjack 重复三次

  Number.isFinite("100"); // false 判断数字是否合法,没有隐式转换

  Number.isNaN(NaN); // true 判断数字是否是NaN

  Number.isInteger(100.0); // true 判断数字是否是整数

  // Number.EPSILON 极小常量,可以定义一个函数,判断两个值是否相等
  function isEqual(x, y) {
    return Math.abs(x - y) < Number.EPSILON;
  }
  console.log(isEqual(0.1 + 0.2, 0.3)); // true

  // 直接舍弃小数
  Math.trunc(1.8); // 1
  Math.trunc(-1.8); // -1

  // 判断一个数是正数、负数还是零,存在隐式转换
  Math.sign(-100); // -1
  Math.sign(+100); // 1
  Math.sign(-0); // -0
  Math.sign(+0); // 0
  Math.sign("haha"); // NaN`