Определение UpperCase и LowerCase по сравнению с блоком кода - PullRequest
0 голосов
/ 25 июня 2018

Я экспериментировал с добавлением сокращения к объекту документа на основе соглашения о присвоении имен в случае верблюда.Например, следующий код добавит document с qS, который является сокращенным для querySelector и aEL, который является сокращенным для addEventListener

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, который ссылается на оригинальный метод - ergo document.querySelector становится d.qS

В какой-то момент я научился уловке сравнения символа с фигурными скобками, чтобы определить его регистр,ae

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

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

Проблема в том, что я не понимаю, как это работает, хотя, кажется, все время работает идеально.Я не совсем уверен, что блок кода оценивается как сравнительный, и это трудно для Google, и даже после просеивания Codegolf и SO я не нашел ответа.Я надеюсь, что кто-то может объяснить это?

ПРИМЕЧАНИЕ: Я понимаю, что объяснения кода осуждаются, но я проверил мета, чтобы определить, действительно ли это было https://meta.stackexchange.com/questions/188079/where-to-ask-for-code-explanation

1 Ответ

0 голосов
/ 25 июня 2018

Если вы проверите предупреждение ({}), то оно покажет [объект объекта].Здесь ваше сравнение будет проходить как сравнение строк.Таким образом, заглавные буквы AZ имеют значение ASCII от 65 до 90.«[» Имеют значение ASCII как 91, а строчные az имеют значение ASCII от 97-122.Таким образом, согласно значениям ASCII для заглавных букв ваш код возвращает значение true, а для строчных букв - false.

...