JavaScript中的强制
我想知道一些关于强迫的事情 当您这样做时:JavaScript中的强制,javascript,coercion,Javascript,Coercion,我想知道一些关于强迫的事情 当您这样做时: 1 == true // true 哪一个被强迫进入哪一个?是左边的还是右边的 当你这样做的时候 undefined == null // true 它到底是如何工作的? 它尝试按什么顺序转换它? 举例来说: 1) String(undefined) == String(null) // false 2) Number(undefined) == Number(null) // false 3) Boolean(undefined
1 == true // true
哪一个被强迫进入哪一个?是左边的还是右边的
当你这样做的时候
undefined == null // true
它到底是如何工作的?
它尝试按什么顺序转换它?
举例来说:
1) String(undefined) == String(null) // false
2) Number(undefined) == Number(null) // false
3) Boolean(undefined) == Boolean(null) // true
它是否首先尝试强制左侧操作数?那是对的?那么两者都有
编辑:
如评论中所述:
“不是重复的。虽然这两个问题都是关于类型强制的,但这一个问题询问哪一个操作数被强制到另一个操作数中。另一个问题是关于在评估强制类型时真实性的来源”该过程描述于: 比较x==y,其中x和y是值,生成true或false。这样的比较如下所示:
因此,与其先强制一方,然后强制另一方,或者诸如此类,解释器更需要遍历上面的列表,直到找到匹配的条件,并执行结果命令,这可能只涉及强制左侧或右侧(并且,在达到递归命令的情况下,如使用满足条件8的
true=='1'
,这两种情况都很少发生,变成1=='1'
,满足条件6并变成1==1
,满足条件3并解析为true
)@adiga绝对不是重复的。虽然这两个问题都是关于类型强制的,但这一个问题询问哪一个操作数被强制到另一个操作数中。另一个问题是关于在计算被强制的操作数时真理的来源types@adiga这不是重复。标记的链接正在检查相等,这篇文章正在询问相等的过程。这就像为什么1==true是true vs 1==正确的方式true@Rajesh这可能是一个重复的问题。它们是相关的。这对未来的用户(和OP)来说是很有用的,他们来到这个问题时可能会想阅读链接的问题。@adiga:重复的问题是“重复的问题”,而不是“有类似答案的相关问题”。所以它肯定不是一个副本。@SalmanA我可能读错了,但在8中,它不能同时是两个吗?这个算法称自己是对的吗?@kaido在8中,y不是强制的。同样在9中(x不是强制的)。@SalmanA还没有,但是在下一次出现的数字(x)的比较中=y.y/<代码>它可能是no .@ SalMaA 8递归调用<代码>=< /COD>进程,所以我确信它是可能的吗?考虑<代码>真= = 1”< /代码>