Open 10081677wc opened 6 years ago
产生式 EqualityExpression:EqualityExpression == RelationalExpression 按照如下过程执行:
产生式 UnaryExpression:!UnaryExpression 按照如下过程执行:
比较运算 x==y,其中 x 和 y 是值,产生 true 或者 false 的结果,按照如下过程执行:
ToPrimitive(obj, preferredType) 第一个参数 obj 为被转换的对象,第二个参数 preferredType 为希望转换成的类型(默认为空,接受的值为 Number 或 String)。 在执行 ToPrimitive(obj, preferredType) 时,如果第二个参数为空并且 obj 为 Date 的实例时 preferredType 会 被设置为 String;其他情况下 preferredType 都会被设置为 Number,此时有执行过程如 下:
ToPrimitive(obj, preferredType) 第一个参数 obj 为被转换的对象,第二个参数 preferredType 为希望转换成的类型(默认为空,接受的值为 Number 或 String)。
在执行 ToPrimitive(obj, preferredType) 时,如果第二个参数为空并且 obj 为 Date 的实例时 preferredType 会 被设置为 String;其他情况下 preferredType 都会被设置为 Number,此时有执行过程如 下:
如果 preferredType 为 String 则将上面的第2步和第3步调换即:
toString 用来返回对象的字符串表示:
const o = {}; o.toString(); // "[object Object]" const a = []; a.toString(); // "" const d = new Date(); d.toString(); // "Sat Feb 10 2018 16:41:20 GMT+0800 (CST)"
valueOf 方法返回对象的原始值,原始值指的是 ['Null', 'Undefined', 'String', 'Boolean', 'Number'] 五种基本数据类型之一:
const o = {a: 1}; o.valueOf(); // {a: 1} const a = [1]; a.valueOf(); // [1] const d = new Date(); d.valueOf(); // 1518252406357
http://es5.github.io/#x11.9.3
彻底理解 JavsScript 类型转换
为什么 []==![] 是 true?
EqualityExpression
产生式 EqualityExpression:EqualityExpression == RelationalExpression 按照如下过程执行:
UnaryExpression
产生式 UnaryExpression:!UnaryExpression 按照如下过程执行:
相等比较算法
比较运算 x==y,其中 x 和 y 是值,产生 true 或者 false 的结果,按照如下过程执行:
ToBoolean
ToNumber
ToPrimitive
http://es5.github.io/#x11.9.3