编辑:我将重新解释我的问题,我输入Number <String并返回true,当我输入typeof(2)<typeof("2")时也可以.
Number < String => true
typeof(2) < typeof("2") => true
Run Code Online (Sandbox Code Playgroud)
我猜它是Number和String中每个字母的ASCII字符的值,但我不确定这是否是返回true的原因,我想知道为什么会发生这种情况,什么过程或者如何解释得到这个结果?
第一个答案:
charCodeAt()方法返回给定索引处字符的数字Unicode值.在这里阅读
现在,如果您未指定任何索引位置,则考虑第0个索引处的字符.现在,SASCII值是83和NASCII值78.所以,你得到的那些号码.请点击这里.
而且78 < 83 => true很明显.
尝试"String".charCodeAt(1),你会得到116哪个是ASCII值t
坦率地说,你的比较Number < String在技术上是不正确的,因为Less-than Operator <或任何类似的运算符用于表达式,Number并且String是函数而不是表达式.然而@Pointy解释了如何Number < String工作并给你结果.
比较运算符,如<表达式,在这里阅读.通常,您应该具有RHS和LHS的有效表达式或已解析值.
现在这是表达式的定义,在这里阅读更多- " 表达式是解析为值的任何有效代码单元.从概念上讲,有两种类型的表达式:为变量赋值的那些和只有变量的变量.价值. "
所以,(x = 7) < (x = 2)或者new Number() < new String()是"技术上"有效/良好的比较,即便如此,Object.toString < Number.toString()但实际上并非如此Object < Function.
以下是比较的规则/功能,请在此处阅读更多内容
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |