Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   дилетантский вопрос (https://javascript.ru/forum/misc/52974-diletantskijj-vopros.html)

Wahtel 15.01.2015 13:54

дилетантский вопрос
 
Всем привет, у меня к вам дилетантский вопрос, я просто с js вообще не работаю, надо написать условие, что если существует функция, то вызвать ее)
Я просто синтаксис плохо знаю.

Deff 15.01.2015 14:02

if(typeof(myFunc)=='function') myFunc();

Wahtel 15.01.2015 14:09

Спасибо)

Wahtel 15.01.2015 14:28

А если у меня функция находится в другой папке, как мне к ней обратиться?
Я пишу:
if (typeof('noimgfound') == 'function') {
                noimgfound();
            }

Но ничего не просиходит(

Wahtel 15.01.2015 14:33

Я перенес функцию в это файл, все равно не срабатывает.

Deff 15.01.2015 16:23

Wahtel, выложите функцию, возможно у неё есть параметры ?
А так всё должно работать - Кавычки в typeof() - лишние
function noimgfound() {
  alert('Привет!');
}
 if (typeof(noimgfound) == 'function') {
                noimgfound();
}

ruslan_mart 15.01.2015 16:44

Deff, typeof не функция, скобки не нужны. ;)

Deff 15.01.2015 17:03

Ruslan_xDD,
Пофег, она и как функция работает! В старых скриптах ток в скобках и работало

ruslan_mart 15.01.2015 17:15

Deff, не соглашусь, не работает как ф-ция. В данном случае скобки просто для группировки, не более. :)

Аналогично:

var str = ('Hello');
alert( typeof str );


Т.е., смысла в них нет. ;)

Deff 15.01.2015 17:28

Ruslan_xDD,
Я согласен, но просто привык, посмотри cтарые скрипты от ИЕ5
Вот чо мелкософт тогда писал:
Цитата:

Операция typeof возвращает строку, содержащую информацию о типе операнда. Она имеет вид:
typeof expr или typeof(expr)

var size = 1;
var shape = "круглый";
var today = new Date();
typeof(size); // возвращает "number"
typeof shape; // возвращает "string"
typeof today; // возвращает "object"
Про скобки аналогичный спор чисто: "Какой отступ Вы делаете во вложенных операндах:три пробела или табуляцию?"
Мне привычней скобки

registrant 15.01.2015 20:56

if(window.fu) fu()

Deff 15.01.2015 20:59

registrant,
Ну а если есть переменная со сходным именем ?

registrant 15.01.2015 21:21

Цитата:

Сообщение от Deff
Ну а если есть переменная со сходным именем ?

А ты не в курсах, что в JS нет отдельного неймспейса для ф-ций?

registrant 15.01.2015 21:29

можно еще вот так
window.fu&&fu()

ruslan_mart 16.01.2015 04:40

Deff, функция по сути же и есть переменная. :)

function test() {
   //...
};

alert( test );

alert( window.test );

test = 123;

alert( typeof test );


registrant, а если переменная не ф-ция? Ошибка же будет. И почему проверка через window? Можно просто if(fu) fu();

registrant 16.01.2015 08:27

Цитата:

Сообщение от Ruslan_xDD
а если переменная не ф-ция? Ошибка же будет

а если бы он вез патроны?
Цитата:

Сообщение от Ruslan_xDD
Можно просто if(fu) fu();

так если переменной нет, будет референс эррор еще до первой ветки.

ruslan_mart 16.01.2015 09:50

registrant, так определи её, в чём проблема?

var fn;


Часовой пояс GMT +3, время: 13:34.