JS学习梳理(三)类型和语法

  1. 类型
    • JavaScript 有七种内置类型:null、undefined、boolean、number、string、object 和symbol,可以使用typeof 运算符来查看
    • typeof返回的都是字符串
    • 很多开发人员将undefined 和undeclared 混为一谈, 但在JavaScript 中它们是两码事。undefined 是值的一种。undeclared 则表示变量还没有被声明过
    • 字符串反转
      var a = "foo";
      var c = a
      // 将a的值转换为字符数组
      .split( "" )
      // 将数组中的字符进行倒转
      .reverse()
      // 将数组中的字符拼接回字符串
      .join( "" );
      c; // "oof"
    • 较小数值比较
      function numbersCloseEnoughToEqual(n1,n2) {
          return Math.abs( n1 - n2 ) < Number.EPSILON;
      }
    • 值和引用
      • null 类型只有一个值null,undefined 类型也只有一个值undefined
      • 所有变量在赋值之前默认值都是undefined。void 运算符返回undefined
      • 数字类型有几个特殊值, 包括NaN( 意指“not a number”, 更确切地说是“invalid number”)、+Infinity、-Infinity 和-0
  2. 强制转换
    • 显式强制转换
      var a = "Hello World";
      ~a.indexOf( "lo" ); // -4 <-- 真值!
      if (~a.indexOf( "lo" )) { // true
      // 找到匹配!
      }
      ~a.indexOf( "ol" ); // 0 <-- 假值!
      !~a.indexOf( "ol" ); // true
      if (!~a.indexOf( "ol" )) { // true
      // 没有找到匹配!
      }
    • 隐式强制类型转换
    • || && 有意思的“操作数选择器”
      function foo(a,b) {
          a = a || "hello";
          b = b || "world";
          console.log( a + " " + b );
      }
      foo(); // "hello world"
      foo( "yeah", "yeah!" ); // "yeah yeah!"
    • 强制转换
      1. 如果Type(x) 是数字,Type(y) 是字符串,则返回x == ToNumber(y) 的结果
      2. 如果Type(x) 是字符串,Type(y) 是数字,则返回ToNumber(x) == y 的结果
      3. 如果Type(x) 是布尔类型,则返回ToNumber(x) == y 的结果
      4. 如果Type(y) 是布尔类型,则返回x == ToNumber(y) 的结果
  3. 异步和性能
    • Promise.resolve保证可信任
    • 调用Promise 的then(..) 会自动创建一个新的Promise 从调用返回
    • 在完成或拒绝处理函数内部,如果返回一个值或抛出一个异常,新返回的(可链接的)Promise 就相应地决议
    • 如果完成或拒绝处理函数返回一个Promise,它将会被展开,这样一来,不管它的决议值是什么,都会成为当前then(..) 返回的链接Promise 的决议值
    • Promise.all([ .. ])
    • Promise.race([ .. ])
  4. 生成器
posted @ 2018-05-23 19:14  C.Jun  阅读(219)  评论(0编辑  收藏  举报