javascript - < 和 > 运算符如何工作

标签 javascript node.js javascript-objects

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

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

f=s=>s<{}
f=c=>c<{}
f=_=>_<f
f=Z=>Z<f

有些变量名不适用于 f :

f=a=>a<f
f=z=>z<f

为什么以及如何<>运算符在将函数与基本字符串进行比较时有效吗?也许指针比较?

自己试试:

// 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'))

最佳答案

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

要清楚,

s => s<{}

有效

s => s<"[object Object]"

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

关于javascript - < 和 > 运算符如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170676/

相关文章:

javascript - 基于两个下拉菜单的 jQuery 重定向

javascript - Firebase云函数生成推送ID

javascript - 解析后如何通过回调将内容从服务传递到另一个服务到 Controller ?

javascript - 强制 javascript 变量作为 "value"传递

javascript - Redux-form:如何在向导表单上设置初始值?

c# - C#中删除JavaScript创建的本地存储的方法

javascript - 使用jquery自动触发点击

JavaScript 递归 setTimeout

javascript - 在 if 条件中访问 Javascript 对象,可以做到吗?

javascript - 嵌套的 if 语句和 && (and) 运算符在这个 for 循环中有何不同?