При создании объекта одному из свойств можно приписать вызов функции. Например:
function test() {
console.log('tester')
}
var obj = {
a: 10,
b: test()
}
По идее, присваивается результат функции. Вроде так и есть. Но по факту, даже без вызова (просто при наличии подобной функции у объекта), это свойство объекта самовызывается.
Как вариант - скорее всего, потому что в функции присутствует console.log
, который и вызывает себя. Но вот должен ли он это делать при объявлении объекта?
Так же как и:
var testA = console.log( 1 )
var testB = function(value) {
console.log( value )
}
var testC = testB(3)
testB(2)
Тут тоже - вроде по приоритету вызов функции должен быть первым. Но по факту - сначала вызывается (при присвоении переменной - должно быть в последнюю очередь), testA
, потом testB
, а уже потом сам вызов функции testB(2)
Вроде же в приоритете должно быть выполнение функции, а только лишь потом присвоение. ЧЯДНТ?
При создании объекта подобным образом:
var obj = {
b: test()
}
в obj.b
попадает результат выполнения функции test
(undefined
), то есть функция test
выполняется в момент создания объекта
Если функция должна вызываться позже в виде obj.b()
, то в b
нужно помещать не результат выполнения, а ссылку на функцию:
var obj = {
b: test
}
Во втором примере в testA
присваивается результат выполнения функции console.log
. В процессе её выполнения в консоль выводится 1
, а её результат (undefined
) попадает в testA
После чего в testB
присваивается безымянная функция, в testC
- результат выполнения testB
(что опять-таки приводит к вызову console.log
), и в конце просто вызывается testB
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть Vue приложениеС него идёт запрос к API для получения данных о пользователе
Я не понимаю, почему не выходит повторить анимациюТо есть при нажатии на пробел я ожидаю, что вылетит столько чёрных блочков, сколько нажатий...
Имеем такие блокиВ подменю 2 Блок2 появляется новая строка, при ее появлении нужно убрать другую строку