zoukankan      html  css  js  c++  java
  • Js ==和===的区别

    ===判断:

    Undefined === Undefined,返回 true

    Null === Null,返回 true

    null == undefined,返回 false

    NaN === NaN,返回 false (其中typeof NaN : Number)

    +0 === -0,返回 true

    如果左右引用的是同一个对象,返回 true

    ==判断:

    null == undefined,返回 true

    如果x为Number,y为String,返回 x == ToNumber(y) (其中 ToNumber(undefined) == NaN, ToNumber(null) == +0)

    如果x为Number,y为Boolean,返回 x == ToNumber(y)

    如果x为String或Number,y为Object,返回 x == ToPrimitive(y)

    补充:

    在JavaScript中,一共有两种类型的值:原始值(primitives)和对象值(objects).原始值有:undefined, null, 布尔值(booleans), 数字(numbers),还有字符串(strings).其他的所有值都是对象类型的值,包括数组(arrays)和函数(functions)。

    通过ToPrimitive()将值转换为原始值

    ToPrimitive(input, PreferredType?):可选参数PreferredType可以是Number或者String,它只代表了一个转换的偏好,转换结果不一定必须是这个参数所指的类型,但转换结果一定是一个原始值.如果PreferredType被标志为Number,则会进行下面的操作来转换输入的值

    1. 如果输入的值已经是个原始值,则直接返回它.
    2. 否则,如果输入的值是一个对象.则调用该对象的valueOf()方法.如果valueOf()方法的返回值是一个原始值,则返回这个原始值.
    3. 否则,调用这个对象的toString()方法.如果toString()方法的返回值是一个原始值,则返回这个原始值.
    4. 否则,抛出TypeError异常.

    如果PreferredType被标志为String,则转换操作的第二步和第三步的顺序会调换.如果没有PreferredType这个参数,则PreferredType的值会按照这样的规则来自动设置:Date类型的对象会被设置为String,其它类型的值会被设置为Number.

  • 相关阅读:
    react log
    valueOf()、toString()、toLocaleString()三个方法的区别
    git 多账号配置 mac和windows10 记录一下
    js执行顺序,Promise和async中的立即执行
    js事件冒泡及event的target和currentTarget的区别
    canvas 旋转时 中心点的坑
    uni app 在组件中操作 canvas 已踩坑
    js 预编译原理
    mixins 在装饰器 vue-property-decorator 中的使用
    js 面向对象和函数式编程
  • 原文地址:https://www.cnblogs.com/allenben/p/6200581.html
Copyright © 2011-2022 走看看