Sci*_*ion 15 javascript coercion
我想知道一些关于胁迫的事情.
当你这样做时:
1 == true // true
Run Code Online (Sandbox Code Playgroud)
哪一个被强制进入哪一个?是左边还是右边的?
当你这样做
undefined == null // true
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?它以哪种顺序尝试转换它?通过实例:
1) String(undefined) == String(null) // false
2) Number(undefined) == Number(null) // false
3) Boolean(undefined) == Boolean(null) // true
Run Code Online (Sandbox Code Playgroud)
它是否首先尝试强制左侧操作数?那么对吧?那么两个?
编辑:正如评论中所解释的那样:"不是重复.虽然这两个问题都是关于类型强制的,但是这个问题要求哪个操作数被强制转换为另一个.另一个是关于评估强制类型时的真实来源"
Cer*_*nce 28
该过程描述于7.2.12抽象平等比较:
比较x == y,其中x和y是值,产生真或假.这样的比较如下进行:
如果Type(x)与Type(y)相同,则返回执行Strict Equality Comparison x === y的结果.
如果x为null且y未定义,则返回true.
如果x未定义且y为null,则返回true.
如果Type(x)为Number且Type(y)为String,则返回比较结果x == ToNumber(y).
如果Type(x)是String并且Type(y)是Number,则返回比较结果ToNumber(x)== y.
如果Type(x)是布尔值,则返回比较结果ToNumber(x)== y.
如果Type(y)是布尔值,则返回比较结果x == ToNumber(y).
如果Type(x)是String,Number或Symbol而Type(y)是Object,则返回比较结果x == ToPrimitive(y).
如果Type(x)是Object而Type(y)是String,Number或Symbol,则返回比较结果ToPrimitive(x)== y.
返回false.
因此,不是强迫一方而是另一方,或类似的东西,更多的是解释器通过上面的列表直到找到匹配条件,并执行结果命令,这可能只涉及强制左侧,或仅右边(并且,很少,两者,如果达到递归命令,例如true == '1',将满足条件8,转入1 == '1',满足条件6并转入1 == 1,满足条件3并解决true)
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |