JavaScript学习之杂记

发布于 2021-07-05  247 次阅读


  • 未赋值的变量在布尔类型环境中会被当做false
var myArray = [];
if (!myArray[0])   myFunction();
//myFunction()会运行
  • 数值类型环境中,undefined值会被转换为NaN
var a;
a + 2;    // 计算为 NaN
  • 字符串转换为数字

  • 增强的对象字面量
    在ES2015,对象字面值扩展支持在创建时设置原型,简写了 foo: foo 形式的属性赋值,方法定义,支持父方法调用,以及使用表达式动态计算属性名。总之,这些也使对象字面值和类声明更加紧密地联系起来,让基于对象的设计从这些便利中更加受益

var obj = {
    // __proto__
    __proto__: theProtoObj,
    // Shorthand for ‘handler: handler’
    handler,
    // Methods
    toString() {
     // Super calls
     return "d " + super.toString();
    },
    // Computed (dynamic) property names
    [ 'prop_' + (() => 42)() ]: 42
};
  • 条件判断时识别为false
    默认为false

  • =====

    严格相等比较 不进行类型转换 (如果类型不同, 只是总会返回 false)
    全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换。如果两个被比较的值具有不同的类型,这两个值是不全等的。否则,如果两个被比较的值类型相同,值也相同,并且都不是 number 类型时,两个值全等。最后,如果两个值都是 number 类型,当两个都不是 NaN,并且数值相同,或是两个值分别为 +0 和 -0 时,两个值被认为是全等的。
    抽象相等比较 在比较两件事情时,双等号将执行类型转换
    相等操作符比较两个值是否相等,在比较前将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被转换),最终的比较方式等同于全等操作符 === 的比较方式。 相等操作符满足交换律。

Go Big or Go Home