为了账号安全,请及时绑定邮箱和手机立即绑定

< 和 > 运算符的工作原理

< 和 > 运算符的工作原理

qq_笑_17 2021-11-04 14:23:43
我最近遇到了一个高尔夫卡塔,要求检查一个字母是否大写,不超过 9 个字符。用户的回答有点吓人(这些例子也适用>于相反的顺序):f=s=>s<{}f=c=>c<{}f=_=>_<ff=Z=>Z<f某些变量名称不适用于f:f=a=>a<ff=z=>z<f将函数与基本字符串进行比较时,<and>运算符为何以及如何工作?也许指针比较?自己试试:// workingf1=s=>s<{}f2=c=>c<{}f3=_=>_<f3f4=Z=>Z<f4// not workingf5=s=>s<f5console.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'))
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

将字符串与{}进行比较实际上是将字符串与 的结果进行比较,结果({}).toString()始终为"[object Object]"。重要的部分是[字符,它是最后一个大写字母 ( Z)之后的第一个代码点。因此,如果您知道输入字符串是某个字母,则与以 开头的字符串进行比较[会告诉您它是一个大写字母。

要清楚,

s => s<{}

是有效的

s => s<"[object Object]"

它与使用对象 ( {})时选择的变量名称无关,但对于函数引用版本很重要。其中,“_”很重要,因为它是在“Z”之后但在所有小写字母之前的字符。


查看完整回答
反对 回复 2021-11-04
?
杨魅力

TA贡献1811条经验 获得超6个赞

运算符><返回truefalse取决于运算符周围的两个值。如果您尝试分配与布尔值不兼容的类型,则它将不起作用


查看完整回答
反对 回复 2021-11-04
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信