【问题标题】:Determining UpperCase and LowerCase comparing to code block确定大写和小写与代码块的比较
【发布时间】:2018-12-04 04:39:45
【问题描述】:

我正在尝试根据驼峰式命名约定向文档对象添加速记。例如,下面的代码将附加documentqS,这是querySelector 的简写,aELaddEventListener 的简写

let b, d, e; 
for(let k in(d=document)) d[k[0]+k.split("").filter(_=>_<{}).join("")] = d[k];

e=_=>d.qS(_);
b=_=>d.aEL.bind(_);

我将d 声明为document,然后遍历它的每个键,确定骆驼大小写字母(k[0] 是第一个小写字母,然后我过滤键以查找任何大写字母),然后将第一个小写字母和任何大写字母作为 document 上引用原始方法的新方法 - 尔格 document.querySelector 变为 d.qS

在某个时候,我学会了将字符与大括号进行比较以确定其大小写的技巧。 a.e.

"c"<{}; //false
"C"<{}; //true

"E"<{}; //true
"e"<{}; //false

问题是我不明白它是如何工作的,尽管它似乎一直都能完美地工作。我不确定一个代码块被评估为一个比较,它很难谷歌,即使在筛选了 codegolf 之后,我也没有找到答案。我希望有人能解释一下吗?

注意:我意识到代码解释不受欢迎,但我确实检查了元数据以确定这是否有效https://meta.stackexchange.com/questions/188079/where-to-ask-for-code-explanation

【问题讨论】:

  • 如果您检查 alert({}) 那么它将显示 [object Object]。在这里,您的比较将作为字符串比较进行。所以大写字母 A-Z 的 ASCII 值是 65-90。 “[” 的 ASCII 值为 91,小写字母 a-z 的 ASCII 值为 97-122。因此,根据大写字母的 ASCII 值,您的代码返回 true,小写字母返回 false。
  • @KaranPatel - 这是很好的解释,我认为你应该把它写成答案,而不仅仅是评论。

标签: javascript ecmascript-6 conditional-operator


【解决方案1】:

如果您选中 alert({}),那么它将显示 [object Object]。在这里,您的比较将作为字符串比较进行。所以大写字母 A-Z 的 ASCII 值是 65-90。 “[” 的 ASCII 值为 91,小写字母 a-z 的 ASCII 值为 97-122。因此,根据大写字母的 ASCII 值,您的代码返回 true,小写字母返回 false。

【讨论】:

  • 哦,呵呵!哈哈。我肯定是多虑了。感谢您的回答!
  • 在 JavaScript 中,重要的是 UTF-16 代码单元值。 JavaScript 不知道 ASCII。
  • @TomBlodget 这会改变答案的有效性吗?
  • @zfrisch 如果重述几乎相同,答案将是有效的。但理解将基于对 JavaScript 和 UFT-16 的熟悉程度。
  • @TomBlodget 感谢您提供信息。这真的很有帮助。我已经检查了 UTF-16 字符集,它具有相同的 ASCII 序列。因此,即使 javascript 使用 UTF-16,它的工作原理也是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 2016-05-11
  • 2017-07-29
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多