Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS if() - непонятки / 25 сообщений из 62, страница 1 из 3
12.09.2016, 19:35
    #39307946
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Привет всем
почему
Код: java
1.
2.
3.
if (function f(){}) {
  alert(typeof f);
}



undefined а не object

подскажите, не вижу очевидного

спс
Life is a bitch and then you die
...
Рейтинг: 0 / 0
12.09.2016, 20:39
    #39307999
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Код: javascript
1.
2.
3.
if (f=function(){}) {
  alert(typeof f);
}


Существуют функции-объявления и функции-выражения.
Внутри условия if - выражение, зачем там объявлять функции?
...
Рейтинг: 0 / 0
12.09.2016, 20:55
    #39308015
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
VladislavVVundefined а не object
у меня честно возвращает "function"
...
Рейтинг: 0 / 0
12.09.2016, 21:15
    #39308025
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
ИзопропилVladislavVVundefined а не object
у меня честно возвращает "function"
Это если f ранее определена.

так да, возвратит 'function'
Код: javascript
1.
2.
3.
4.
alert(typeof (function f(){}));
/* или так */
function f(){};
alert(typeof f);


а если f ранее не определена, то через выражение вернёт 'undefined'
Код: javascript
1.
2.
3.
if (function f(){}) {
  alert(typeof f);
}


Думаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
Нужно обязательно присваивать результат выражения или передавать в функцию как параметр.
...
Рейтинг: 0 / 0
12.09.2016, 21:56
    #39308046
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
бухалтер фантоцци,

неа, честно undefinned, затем function
Код: sql
1.
2.
3.
4.
alert(typeof f);
if (f=function(){}) {
  alert(typeof f);
}
...
Рейтинг: 0 / 0
12.09.2016, 22:02
    #39308048
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Изопропил,

так это мой правильный код, у ТС другой код
...
Рейтинг: 0 / 0
13.09.2016, 05:49
    #39308104
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Народ, это не рабочий код, это тест на js ninja на itquiz
и он именно такой, какой я написал, без каких либо изменений
...
Рейтинг: 0 / 0
13.09.2016, 05:54
    #39308105
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
[quot бухалтер фантоцци]Изопропилпропущено...



[/src]
Думаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
Нужно обязательно присваивать результат выражения или передавать в функцию как параметр.

+1

Код: java
1.
2.
3.
4.
5.
if (iiii=function f(){}) {
  alert(typeof iiii);
}

alert="function"



спс!
...
Рейтинг: 0 / 0
13.09.2016, 06:37
    #39308112
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
VladislavVVНарод, это не рабочий код, это тест на js ninja на itquiz
и он именно такой, какой я написал, без каких либо изменений
так это был тест для нас?
...
Рейтинг: 0 / 0
13.09.2016, 07:55
    #39308119
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
бухалтер фантоцци,

Что взять с больных людей?.
...
Рейтинг: 0 / 0
13.09.2016, 08:45
    #39308127
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
это был тест для меня , не знал ответа и аргументов для ответа
...
Рейтинг: 0 / 0
13.09.2016, 09:17
    #39308139
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Оккам говорит, что автор теста - болен на голову
...
Рейтинг: 0 / 0
13.09.2016, 09:42
    #39308148
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
ИзопропилОккам говорит, что автор теста - болен на голову

поддерживаю, однако, при собеседовании - таких вопросов - большинство
сорри за offtopic
...
Рейтинг: 0 / 0
14.09.2016, 07:18
    #39308760
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
ИзопропилОккам говорит, что автор теста - болен на голову
Не читайте книжки из серии "You Don't Know JS". Плохо спать будете :)
...
Рейтинг: 0 / 0
14.09.2016, 08:14
    #39308773
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
VladislavVVоднако, при собеседовании - таких вопросов - большинство
Манагеры атакуют...
...
Рейтинг: 0 / 0
14.09.2016, 08:17
    #39308776
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
skyANAИзопропилОккам говорит, что автор теста - болен на голову
Не читайте книжки из серии "You Don't Know JS". Плохо спать будете :)
Почитал. В сон потянуло.
...
Рейтинг: 0 / 0
14.09.2016, 08:36
    #39308786
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
ИзопропилskyANAпропущено...

Не читайте книжки из серии "You Don't Know JS". Плохо спать будете :)
Почитал. В сон потянуло.
От чего конкретно, если не секрет? :)
...
Рейтинг: 0 / 0
14.09.2016, 10:16
    #39308843
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
skyANAОт чего конкретно, если не секрет? :)
об этой книге речь ? - https://github.com/getify/You-Dont-Know-JS
занудная и примитивная
...
Рейтинг: 0 / 0
14.09.2016, 10:31
    #39308855
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
бухалтер фантоцциДумаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
Нужно обязательно присваивать результат выражения или передавать в функцию как параметр.
полагаю, что корректный ответ здесь - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/function

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function expression

Конструкция function используется для определения функции внутри выражения.
Синтаксис

function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

name
    Имя функции. Может быть опущено, в случаях, когда функция является анонимной. [color=yellow]Имя функции является локальным[/color] для тела функции.
...
Рейтинг: 0 / 0
14.09.2016, 10:33
    #39308857
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
ИзопропилskyANAОт чего конкретно, если не секрет? :)
об этой книге речь ? - https://github.com/getify/You-Dont-Know-JS
занудная и примитивная
Нет, речь не о конкретной книге, а о серии.
...
Рейтинг: 0 / 0
14.09.2016, 10:35
    #39308858
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
skyANAИзопропилпропущено...

об этой книге речь ? - https://github.com/getify/You-Dont-Know-JS
занудная и примитивная
Нет, речь не о конкретной книге, а о серии.
А, по ссылке и есть серия из 6 книг (линк долго открывался). Так что конкретно Вас усыпило?
...
Рейтинг: 0 / 0
14.09.2016, 12:30
    #39308954
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Изопропилбухалтер фантоцциДумаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
Нужно обязательно присваивать результат выражения или передавать в функцию как параметр.
полагаю, что корректный ответ здесь - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/function

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function expression

Конструкция function используется для определения функции внутри выражения.
Синтаксис

function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

name
    Имя функции. Может быть опущено, в случаях, когда функция является анонимной. [color=yellow]Имя функции является локальным[/color] для тела функции.



К вопросу, поднятому ТС (а именно - почему undefined ) это не имеет никакого отношения. Я достаточно подробно расписал ответ.
И потом, я сразу 19656381 дал ответ насчёт функций-выражений (где можно опустить название) и функций-объявлений.

Но в функциях - выражениях может быть указано имя специально, если впоследствии нужно будет узнать имя функции через obj.name
Можно и так написать, это
Код: javascript
1.
2.
3.
if (f=function myFunc1(){}) {
  alert(typeof (f) + '\n' + f.name);
}
...
Рейтинг: 0 / 0
14.09.2016, 12:59
    #39308972
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
бухалтер фантоцциДумаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
причём здесь преобразование?
Конструкция function использована для определения функция внутри выражения if( ...)
... - выражение, не правда ли?
далее имеем, что имя функции локально для тела - соответственно в ветках условного оператора имя уже не видно)
...
Рейтинг: 0 / 0
14.09.2016, 13:00
    #39308974
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
skyANAТак что конкретно Вас усыпило?
нового ничего не узнал
...
Рейтинг: 0 / 0
14.09.2016, 13:07
    #39308984
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS if() - непонятки
Изопропилбухалтер фантоцциДумаю это потому, что во время вычисления выражения среда исполнения (браузер) использует неявные преобразования,
то-есть результат выражения без присваивания не сохранится.
причём здесь преобразование?
Конструкция function использована для определения функция внутри выражения if( ...)
... - выражение, не правда ли?
далее имеем, что имя функции локально для тела - соответственно в ветках условного оператора имя уже не видно)

1. преобразование при том, что выполнилось условие (результат выражения был приведён неявно к true ),
2. function (или [new] Function) возвращает ссылку на объект-функцию, который без присваивания не сохранится.
3. Поэтомуalert(typeof f); вернёт undefined

19656119
Код: javascript
1.
2.
3.
if (function f(){}) {
  alert(typeof f);
}



Думаю, всё давно понятно, как ТС, так и остальным. Можно конечно докопаться до отдельных слов и даже букв, но зачем?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS if() - непонятки / 25 сообщений из 62, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]