({} + 'y' > {} + 'x');1.我个人的理解应该是{}先toPrimitive(Number)调用valueOf()然后再调用toString()方法变成[object Object]。2.所以就变成了'[object Object]y' > '[object Object]x'3.之后我看了ecmascript规范中的11.8.3抽象关系比较算法 就不懂了为什么会是true。否则,px 和 py 都是 Strings 类型(1).如果 py 是 px 的一个前缀,返回 false。(当字符串 q 的值可以是字符串 p 和一个其他的字符串 r 拼接而成时,字符串 p 就是 q 的前缀。注意:任何字符串都是自己的前缀,因为 r 可能是空字符串。) (2).如果px 是 py 的前缀,返回 true。 (3).让 k 成为最小的非负整数,能使得在 px 字符串中位置 k 的字符与字符串py字符串中位置 k 的字符不相同。(这里必须有一个 k,使得互相都不是对方的前缀) (4).让 m 成为字符串 px 中位置 k 的字符的编码单元值。 (5).让 n 成为字符串 py 中位置 k 的字符的编码单元值。 (6).如果 n<m,返回 true。否则,返回 false。
3 回答
偶然的你
TA贡献1841条经验 获得超3个赞
3) 字符串比较大小,是按字典序来比较大小的,第一位相同就比较第二位:
console.log('2' > '1') // true
console.log('2' > '12') // true
console.log('a2' > 'a1') // true
console.log('a2' > 'a12') // true
添加回答
举报
0/150
提交
取消