< 和 > 运算符的工作原理

我最近遇到了一个高尔夫卡塔,要求检查一个字母是否大写,不超过 9 个字符。


用户的回答有点吓人(这些例子也适用>于相反的顺序):


f=s=>s<{}

f=c=>c<{}

f=_=>_<f

f=Z=>Z<f

某些变量名称不适用于f:


f=a=>a<f

f=z=>z<f

将函数与基本字符串进行比较时,<and>运算符为何以及如何工作?也许指针比较?


自己试试:


// working

f1=s=>s<{}

f2=c=>c<{}

f3=_=>_<f3

f4=Z=>Z<f4


// not working

f5=s=>s<f5


console.log('f1', f1('A'))

console.log('f1', f1('a'))


console.log('f2', f2('A'))

console.log('f2', f2('a'))


console.log('f3', f3('A'))

console.log('f3', f3('a'))


console.log('f4', f4('A'))

console.log('f4', f4('a'))


console.log('f5', f5('A'))

console.log('f5', f5('a'))


qq_笑_17
浏览 124回答 2
2回答

慕容708150

将字符串与{}进行比较实际上是将字符串与 的结果进行比较,结果({}).toString()始终为"[object Object]"。重要的部分是[字符,它是最后一个大写字母 (&nbsp;Z)之后的第一个代码点。因此,如果您知道输入字符串是某个字母,则与以 开头的字符串进行比较[会告诉您它是一个大写字母。要清楚,s&nbsp;=>&nbsp;s<{}是有效的s&nbsp;=>&nbsp;s<"[object&nbsp;Object]"它与使用对象 (&nbsp;{})时选择的变量名称无关,但对于函数引用版本很重要。其中,“_”很重要,因为它是在“Z”之后但在所有小写字母之前的字符。

杨魅力

运算符>和<返回true或false取决于运算符周围的两个值。如果您尝试分配与布尔值不兼容的类型,则它将不起作用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript