Звичайні значення, такі як числа або рядки, є дані. А функцію можна сприймати як дію.
Цю дію можна запустити через дужки (). а можна і скопіювати в іншу змінну, як було продемонстровано вище.
Він називається «Function Expression» (функціональний вираз) і виглядає так:
Незважаючи на трохи різний вигляд, по суті дві ці записи роблять одне і те ж:
Основна відмінність між ними: функції, оголошені як Function Declaration, створюються інтерпретатором до виконання коду.
А Function Expression створюються в процесі виконання виразу, в якому створені, в даному випадку - функція буде створена при операції присвоювання sayHi = function.
Можна розташувати функції внизу, а їх виклик - зверху або навпаки.
У деяких випадках «додаткову зручність» Function Declaration може послужити погану службу.
Наприклад, спробуємо, в залежності від умови, оголосити функцію sayHi по-різному:
Тобто, функція створюється викликом new Function (params, code):
params Параметри функції через кому у вигляді рядка. code Код функції у вигляді рядка.
Таким чином можна конструювати функцію, код якої невідомий на момент написання програми, але рядок з ним генерується або подгружается динамічно під час її виконання.
- Якщо функція оголошена в основному потоці коду. то це Function Declaration.
- Якщо функція створена як частина виразу. то це Function Expression.
Між цими двома основними способами створення функцій є такі відмінності:
До виконання першого рядка коду.
Коли управління досягає рядки з функцією.
Так (тому що створюється заздалегідь)
Якщо немає явної причини використовувати Function Expression - віддавайте перевагу Function Declaration.
Порівняйте з читання:
Function Declaration коротше і краще читається. Додатковий бонус - такі функції можна викликати до того, як вони оголошені.
Використовуйте Function Expression тільки там, де це дійсно потрібно і зручно.
перед тим як писати ...