console.log("20">10); //true
console.log("20a">"10"); //true
console.log("20a">10); //false
Run Code Online (Sandbox Code Playgroud)
我想知道为什么最后一个变为假.并且"20a"转换为比较前的内容.
从比较运算符的MDN页面:
对于关系抽象比较(例如<=),操作数首先在比较之前转换为基元,然后转换为相同的类型.
console.log("20">10); //true
Run Code Online (Sandbox Code Playgroud)
这将转换"20"为数字20并进行比较.既然20大于10,那就是真的.
console.log("20a">"10"); //true
Run Code Online (Sandbox Code Playgroud)
这比较了两个字符串.由于"20a"比(按字母顺序)更大"10",因此确实如此.
console.log("20a">10); //false
Run Code Online (Sandbox Code Playgroud)
这会转换"20a"为数字.结果是NaN(做到+"20a"这一点).NaN不大于任何数字,因此返回false.