Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418

Нестандартный Hello World.

02.01.2021, 20:13. Показов 3958. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! попалось решение одной задачи(надо было чтобы в каждой строке было не больше двух символов), подскажите, как называется такой способ написания кода(что-то типа конструктора, я видел в комментариях)? хотелось бы прочитать об этом.


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
let f
=''
[
'\
t\
r\
i\
m'
][
'\
b\
i\
n\
d'
]`
H\
e\
l\
l\
o\
,\
 \
w\
o\
r\
l\
d\
!`
console.log(f())
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2021, 20:13
Ответы с готовыми решениями:

Нестандартный "Hello, world! "
Здравствуйте уважаемые форумчане. Есть такая задачка с сайта codewars: Write a function F that returns Hello, world! string. But there...

Поменять слова местами то есть Hello World > World Hello C++
Ребят всем привет помогите решить задачку: Имеется предварительно созданный текстовый файл, содержащий строку "Hello World"....

нестандартный Grid
добрый день, нужен нестандартный Grid, отличия от стандартной табличной компоненты: - возможность объединения столбцов (строк не...

6
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
02.01.2021, 22:58
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Привет Schulzkafer,

Цитата Сообщение от Schulzkafer Посмотреть сообщение
подскажите, как называется такой способ написания кода(что-то типа конструктора, я видел в комментариях)?
называется от нечего делать =) Или я загадал загадку.

JavaScript
1
2
3
4
5
6
7
8
9
let o/*объект String у него есть метод trim*/ = {
    trim: function (){
        return this[0]
    }
}
 
 
let f = o['trim']['bind']`Hello, world!`
console.log(f())
Для начала убираем все переносы строки \
Потом вспоминанием что простые типы преобразуются к объектам типов в данном случае String
Затем то что к методам и свойствам объекта можно обращаться как к элементам массива
Для меня тут было интересно узнать что таким способом

JavaScript
1
o['trim']['bind']`Hello, world!`
можно передавать в функцию аргументы

Добавлено через 6 минут
Цитата Сообщение от web_coder2 Посмотреть сообщение
Для меня тут было интересно узнать что таким способом
JavaScript
1
2
3
4
5
6
7
let o = {
    trim: function (p){
        return p[0]
    }
}
 
console.log(o['trim']`Hello, world!`)
Добавлено через 10 минут
Цитата Сообщение от web_coder2 Посмотреть сообщение
Потом вспоминанием что простые типы преобразуются к объектам типов в данном случае String
У объекта String есть метод trim
trim это функция, а у функций js есть метод bind
2
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418
03.01.2021, 00:27  [ТС]
Спасибо!

Добавлено через 29 минут
красиво получается, не обычно:
JavaScript
1
let f =''['toUpperCase']['bind']` uppercasecharacters `;
Как думаете, а можно ли добавить каким-либо образом в эту строку ['trim'], чтобы он не только в в заглавные буквы переводил, но еще и пустое пространство по краям убирал? я попробовал, но не получается.

Добавлено через 6 минут
Понимаю. что можно сделать, вот так:
JavaScript
1
2
3
4
5
6
7
8
let o = {
    do: function (){
        return this[0].toUpperCase().trim()
    }
}
 
let f = o['do']['bind']`   Hello, world!   `();
console.log(f)
но это уже не в одну строку
0
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
03.01.2021, 01:34
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Цитата Сообщение от Schulzkafer Посмотреть сообщение
Как думаете, а можно ли добавить каким-либо образом в эту строку ['trim'], чтобы он не только в в заглавные буквы переводил, но еще и пустое пространство по краям убирал? я попробовал, но не получается.
да как то так
JavaScript
1
let f =''['toUpperCase']['bind']` uppercasecharacters `()['trim']();
меня больше волнует почему это вообще работает =)

JavaScript
1
2
3
4
function gg(g){
    return g[0]+"1"
}
console.log(gg`Hello`)
babel трансформировал это в это

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function _templateObject() {
  var data = _taggedTemplateLiteral(["Hello"]);
 
  _templateObject = function _templateObject() {
    return data;
  };
 
  return data;
}
 
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
 
function gg(g) {
  return g[0];
}
 
console.log(gg(_templateObject()));
Значит это какое-то новшество

Добавлено через 4 минуты
Цитата Сообщение от web_coder2 Посмотреть сообщение
Значит это какое-то новшество
новшество es2016 там код не трансформируется

Добавлено через 21 минуту
Цитата Сообщение от web_coder2 Посмотреть сообщение
новшество es2016 там код не трансформируется
В статье на хабре Обзор новшеств ECMAScript 2016, 2017, и 2018 с примерами

В части 2. Устранение ограничений тегированных шаблонных строк

есть пример кода

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function greet(hardCodedPartsArray, ...replacementPartsArray) {
    console.log(hardCodedPartsArray);
    console.log(replacementPartsArray)
 
    let str = "";
 
    hardCodedPartsArray.forEach((string, i) =>{
    if (i < replacementPartsArray.length) {
        str += `${string} ${replacementPartsArray[i] || ''}`;
    } else {
        str += `${string} ${timeGreet()}`;
    }
});
return str;
}
 
const firstName = 'Raja';
const greetings = greet `Hello ${firstName}!`;
console.log(greetings);
function timeGreet() {
    const hr = new Date().getHours();
        return hr < 12 ?
            'Good Morning!' :
            hr < 18 ? 'Good Afternoon!' : 'Good Evening!';
}
и объяснение: При использовании тегированных шаблонов можно написать функцию, принимающую, как параметры, неизменную часть строкового литерала

Прикольно!

Добавлено через 16 минут
Цитата Сообщение от web_coder2 Посмотреть сообщение
Прикольно!
Можно разбирать строку на составляющие подстановки это круть просто!

JavaScript
1
2
3
4
5
6
7
function test(_, ...t) {
    console.log(t.join(" "))
}
 
let str = "Привет киберфорум в Новом 2021 году".split(" ")
 
test`${str[0]}${str[1]}${str[2]}${str[3]}${str[4]}${str[5]}`
2
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418
03.01.2021, 04:32  [ТС]
Цитата Сообщение от web_coder2 Посмотреть сообщение
да как то так
Очень красиво получилось!

Добавлено через 11 минут
Цитата Сообщение от Schulzkafer Посмотреть сообщение
Очень красиво получилось!
Теперь на codewars буду хвалиться!)

Добавлено через 1 минуту
Цитата Сообщение от web_coder2 Посмотреть сообщение
Можно разбирать строку на составляющие подстановки это круть просто!
Как раз у вас этот момент хотел уточнить:

JavaScript
1
2
3
4
let str = "Привет киберфорум в Новом 2021 году".split(' ')
 console.log(str[1])
 let f =''['toUpperCase']['bind']`${str[1]}`();
console.log(f)
Не могу понять, почему если мы передаем таким вот образом, то получается не то что хотелось бы?
И в результате вообще всегда запятая получается независимо от переданных данных

Добавлено через 6 минут

Не по теме:

Цитата Сообщение от Schulzkafer Посмотреть сообщение
хвалиться!
хвалиться -> хвастаться



Добавлено через 7 минут
Ну да, почему-то он заменяет ${str[3]} на ',', а все остальное оставляет
JavaScript
1
let f =''['toUpperCase']['bind']` аgdgf ${str[3]}`();
Добавлено через 5 минут
Перепроверил, здесь так же нельзя:
JavaScript
1
2
3
4
5
6
7
8
9
10
 let o = {
    trim: function (p){
      console.log(p)
        return p[0]
    }
}
 
let str = `happy new year!`.split(' ');
console.log(o['trim']` sfsffs `)
console.log(o['trim']`${str[0]}`)
Добавлено через 5 минут
Кстати, здесь тоже самое (значит вы знаете что происходит):
JavaScript
1
2
3
4
5
6
7
8
9
function test(...t) {
   console.log(t)
    console.log(t.join(" "))
}
 
let str = "Привет киберфорум в Новом 2021 году".split(" ")
 
test`${str[0]}${str[1]}${str[2]}${str[3]}${str[4]}${str[5]}`
test(str[0], str[1], str[2], str[3], str[4], str[5])
Добавлено через 13 минут
сейчас стало понятно(правда это не решает мой первый вопрос передачи данных ${} а однострочном выражении) - в p идут все "обычные" строки, а в z - все типа ${}:
JavaScript
1
2
3
4
5
6
7
8
9
 let o = {
    trim: function (p,...z){
      console.log(p)
      console.log(z)
      }
}
 
let str = `happy new year!`.split(' ');
console.log(o['trim']` sfsffs ${str[0]} fgdgdffg ${str[1]}`)
0
 Аватар для web_coder2
755 / 359 / 100
Регистрация: 04.10.2018
Сообщений: 548
03.01.2021, 08:28
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Цитата Сообщение от Schulzkafer Посмотреть сообщение
сейчас стало понятно(правда это не решает мой первый вопрос передачи данных ${} а однострочном выражении)
да это и не должно помогать делать такие выражения =) как это например:

JavaScript
1
console.log(''['toUpperCase']['bind']` Hello, world! ```['trim']``)
Добавлено через 2 минуты
Или так

JavaScript
1
console.log(''["concat"]` Hello, world! `['toUpperCase']``['trim']``)
Добавлено через 1 минуту
ну или совсем палевно, без всяких загадок зачем нужен бинд и т.д. =)

JavaScript
1
console.log(` Hello, world! `['toUpperCase']``['trim']``)
Добавлено через 50 секунд
традиционные способы не рассматриваем потому что в этой теме это не канон xD
2
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418
03.01.2021, 15:21  [ТС]
Цитата Сообщение от web_coder2 Посмотреть сообщение
ну или совсем палевно, без всяких загадок зачем нужен бинд и т.д. =)
Это великолепно!
Если у вас еще будут творческие порывы по данному разделу, записывайте их сюда!

Добавлено через 5 минут
Можно еще как-нибудь так вот так вот подзапутать неподготовленный глаз:
JavaScript
1
 console.log(String.prototype['toUpperCase']['bind']` Hello, world! ```['trim']``)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.01.2021, 15:21
Помогаю со студенческими работами здесь

нестандартный TrackBar
Мне нужно создать так сказать протоип ТрекБара. Т.е. не со стандартным дизайном, может можно как-то самому компонент создать? Или с помощью...

Нестандартный вопрос
Можно ли запустить flash поверх текста страницы, то-бишь скрыть текст под баннером?

Нестандартный роутинг
Прошу просветить, если кто-нибудь в курсе... Допустим, хочу сделать сайт, который данные берет из API, а весь HTML с пользовательской...

Нестандартный график
Доброго времени суток, всем. Нужно построить график, в приложении Ось наверху от 1 до 4 Данные строятся либо по одному числу (тогда...

Нестандартный шрифт
Имеется такая ситуация используется нестандартный шрифт, он есть на сервере однако у клиента его нет, как исправить данную ситуацию, т.е....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru