LINUX.ORG.RU

js, функции

 ,


0

1

Так, как совсем недавно стал изучать синтаксис js, то не бейте тапками.

Внимание, вопрос:
Ресурс codecademy заставляет писать функции:

const foo = () => {}
В остальных ресурсах:
function foo() {}

Как в дальнейшем писать правильно?
Просто краем уха слышал, что что-то делают с областью видимости.

Deleted

Пиши как в 1 варианте, пока не поймёшь разницу :) меньше геммора для тебя будет. Ещё теперь в объектах можешь писать:

{
functionName(parametr=false){}
}
menangen ★★★★★
()
Ответ на: комментарий от Deleted

Ну, например

foo = () => {console.log(1);}
foo()
foo = () => {console.log(2);}
foo()

function foo() { console.log(1); }
foo()
function foo() { console.log(2); }
foo()

Первый вариант выведет 1 2, второй - 2 2.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

с первым понятно. А во втором то чего? Скрипт читается сверху? Или интерпритатор берёт последнее изменение?

Deleted
()
Ответ на: комментарий от Deleted

Ну вот так интерпретаторы устроены. Сначала парсит файл и куда-то скалыдывает эти функции. Такой код будет работать:

foo();
function foo() {
    alert('test');
}
pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

Спасибо. Значит, пока пишу =>.

Deleted
()

1. Через переменную объявляют, когда кто-то в линте закрутил гайки и хочется чтобы переменная была объявлена до использования. Но определить функции в нужном порядке не получается.

2. => не ломает this, но я совершенно не понимаю, нахрена так извращаться с функциями при объявлении. Обычно замыкания где надо this сохранить сразу используют, а не в переменную суют.

IMHO на codecademy вкусовщина махровая. Лично мне вариант с function более симпатичен.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Я уже поменял площадку для теста. Но спасибо за высказывание по теме.

Deleted
()

Arrow function использует this из того места, где был определен

Обычный function создаёт свой this

Всё. Проффесоры блин собрались

anonymous
()

Первое - берет контекст, второе изолирует. Правильно как нужно от задачи

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Мне почему-то кажется, что когда человек спрашивает про объявление функций, грузить его про память не стоит :). Будет спрашивать про быстрый код - тогда и обсудим.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Надо быстрый код, конечно. Поэтому лучше сразу выработать стиль, что ли.

Будет спрашивать про быстрый код - тогда и обсудим.

Deleted
()

const foo = () => {}

почти эквивалентно

(function foo() {}).bind(this)

Разница есть еще в том, что в первом варианте у функции нет объекта arguments, а также имени.

anonymous
()
Ответ на: комментарий от Deleted

Надо быстрый код, конечно.

Вы пишете парсеры и числодробилки? Универсального стиля нет. Писать вебню в стиле числодробилок как минимум не рационально по затратам.

Vit ★★★★★
()
Ответ на: комментарий от Vit

)) Спасибо, положу в копилку знаний. Но! Если не накладно и не теряет читабельность, чего не написать более шустро?
Или, кхм, более стабильно? Вон MS упор сделало на TS. Поправьте меня, TS вроде интерпретируеися в JS. Со стороны интерпритатора различий нет. А ошибок или быстродействия: сравнить Atom и VSCode.

P.S. Да простят меня за армейский стиль ;)

Deleted
()
Ответ на: комментарий от Deleted

Поправьте меня, TS вроде интерпретируеися в JS

Транслируется в джаваскрипт. Интерпретатора (виртуальной машины) TypeScript не существует.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Спасибо за термин.

Транслируется

Deleted
()
Ответ на: комментарий от Vit

function

Спорим, это гештальт процедуры из детства?

Shadow ★★★★★
()
Ответ на: комментарий от Deleted

TS - это про стабильность и поддерживаемость. Для тех кто не может в ES6/7 и/или кому нужны типы и привычное более ООП. Хотя сам по себе TS хорош. Это некий недосишарп в рамка жс. Дописываю проект на нем (бекенд) - доволен. Поддержка очень легкая. Из подобного братик внимание на Dart. Вроде как он тоже получал положительные отзывы. Правда почему то кроме гугла мало кому сдался

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Дописываю проект на нем (бекенд) - доволен

а какой фреймворк используешь на бэкенде?

anonymous
()
Ответ на: комментарий от silver-bullet-bfg

Время и голова - они не резиновые. Я тоже читал, что TS именно легче в поддержке. На что посоветуешь сделать упор в обучении? Дело в том, что кроме «модных» codecademy нет интерактивных оучалок с поддержкой ES6/7. Мне изменения в стандарте нравятся. более предсказуемое поведение интерпритатора, легче поддержка. Но и кода написано... Только стоит его читать?..

Deleted
()
Ответ на: комментарий от Deleted

Но! Если не накладно и не теряет читабельность, чего не написать более шустро?

Когда у вас в реальной жизни встретится такое удивительное совпадение - позовите, порадуюсь за вас. А обсуждать гипотетические ситуации, высосанные из пальца, мне не интересно.

Vit ★★★★★
()
28 декабря 2017 г.
Ответ на: комментарий от Vit

По прошествии времени, которое иногда и тратилось на обучение балбеса в моём лице, могу сказать, что бенчи (по заверениям разработчика V8) надо очень и очень, кхм, умело писать (что,как показала практика...).

Такие дела.

Deleted
()
Ответ на: комментарий от Deleted

http://mrale.ph/ - вот тут довольно хороший набор статей. И у него же видосики на ютюбе есть на русском. Очень хороший человек. Консультировал меня по мылу с особо хитровывернутыми случами.

Кстати, пока свежи воспоминания, попробуйте придумать, как «новичков» быстро сориентировать что «быстрый JS» не имеет ни какого отношения к тому, что они себе напридумывали. А то отсыл к куче статей и видео может выглядеть как понтование, но ничего лучше пока предложить не получается.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Спасибо, годная мысль, подумаю и отпишусь.

Deleted
()
Ответ на: комментарий от Vit

Вот я столкнулся с транслятором Babel. Не было печали.

Странно он интерпретирует мой код:

let sm = ['a','c','b'];

for(let ass of sm) {
    console.log(ass);
}

Неужели в самом деле, совместимость требует перебирать циклом «по старинке»? Или то, что отдаёт транслятор, норма?

А как Вы поступаете в данном случае?

Проверить можно, что выдаёт на https://babeljs.io/repl/#?babili=false&browsers=&build=&builtIns=...

P.S. По поводу Вашего вопроса. Я думал довольно долго. Пришел к выводу, что уровень знаний, кхм, пациента, отсутствует. Если серьёзно, то надо сразу несколько подходов к задаче: ФП и, допустим, ООП (Си и что-то высокоуровневое) Упор на поддержку! того, что пациент использует на работе или написал сам. Ну и статьи...

Deleted
()
Ответ на: комментарий от x3al

Что он через try catch это делает. И многословно. Возможно это моё отсутствие опыта сказывается...

Deleted
()
Ответ на: комментарий от x3al

Спс. А что, дело с пакетным менеджером npm пока так печально обстоит? Что-то по сравнению с другими языками многословен. Да и работает, кхм, «сыро»? На многие команды warning, «обнови версию» и вообще...

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.