我最近遇到了一个高尔夫卡塔,要求检查一个字母是否大写,不超过 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 回答
![?](http://img1.sycdn.imooc.com/545864000001644402200220-100-100.jpg)
慕容708150
TA贡献1831条经验 获得超4个赞
将字符串与{}
进行比较实际上是将字符串与 的结果进行比较,结果({}).toString()
始终为"[object Object]"
。重要的部分是[
字符,它是最后一个大写字母 ( Z
)之后的第一个代码点。因此,如果您知道输入字符串是某个字母,则与以 开头的字符串进行比较[
会告诉您它是一个大写字母。
要清楚,
s => s<{}
是有效的
s => s<"[object Object]"
它与使用对象 ( {}
)时选择的变量名称无关,但对于函数引用版本很重要。其中,“_”很重要,因为它是在“Z”之后但在所有小写字母之前的字符。
添加回答
举报
0/150
提交
取消