Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.07.2019, 23:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Malleys
Так всё же, почему вам нельзя просто вызвать функцию?
ок, я вызову функцию, не превращая её в выражение. слон я слон, только по голове не бей.
Ответить с цитированием
  #12 (permalink)  
Старый 01.07.2019, 23:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Enter Sandman
Ответить с цитированием
  #13 (permalink)  
Старый 02.07.2019, 01:19
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Malleys Посмотреть сообщение
Вы запускаете функцию и ещё вычисляете.
С каких делов в js вычисляются неиспользуемые выражения
Вы напрочь забыли (не знаете )про анализатор кода языка
Да когда вы вызываете alert в своем синтетическом примере оно вычислит, потому как вы запрашиваете значение.

Сообщение от Malleys Посмотреть сообщение
Знак доллара является разрешенным символов для идентификатора в языке Javascript. jQuery использует знак $ как сокращение для идентификатора jQuery.
Садитесь 3 здесь переменной $ явно присваивается объект jQuery, так как может быть и другой фреймворк (тот же mootools)
Ответить с цитированием
  #14 (permalink)  
Старый 02.07.2019, 04:17
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

соскучился по всем !!!

Сообщение от Poznakomlus
С каких делов в js вычисляются неиспользуемые выражения
var time = performance.now();
var i = 10000000;
  while(i--) (()=>Math.random()*Math.random())();
time = performance.now() - time;
console.log('Время выполнения = ', time);


var time = performance.now();
var i = 10000000;
  while(i--) ;
time = performance.now() - time;
console.log('Время выполнения = ', time);


вот вычисляет все же, и забывает напрочь
Ответить с цитированием
  #15 (permalink)  
Старый 02.07.2019, 04:19
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

можно присвоить значение переменной для наглядности, время не изменится
Ответить с цитированием
  #16 (permalink)  
Старый 02.07.2019, 05:45
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от j0hnik
вот вычисляет все же, и забывает напрочь
j0hnik, супер!

Сообщение от Poznakomlus
С каких делов в js вычисляются неиспользуемые выражения
А зачем писать неиспользуемые выражения?

Сообщение от Poznakomlus
Садитесь 3 здесь переменной $ явно присваивается объект jQuery, так как может быть и другой фреймворк (тот же mootools)
Я говорю про идентификаторы! Идентификатор $ используется как сокращение для идентификатора jQuery, это сделано путём присвоения двум разным переменным одного и того же объекта, т. е. $ === jQuery.

Сообщение от Poznakomlus
переменной $ явно присваивается объект jQuery, так как может быть и другой фреймворк (тот же mootools)
Т. е. в случае, когда не может быть другого фреймворка, то переменной $ неявно присваивается объект jQuery?

Сообщение от Poznakomlus
alert в своем синтетическом пример
Вы понимаете, что там может быть и другой код?

Сообщение от Poznakomlus
Вы напрочь забыли (не знаете )про анализатор кода языка
Речь-то идет о восклицательном знаке перед выражением, которое получено путём вызова анонимной функции!

Сообщение от рони
слон я слон, только по голове не бей.
Не уклоняйтесь от восклицательного знака!
У вас функция даже не возвращает булево значение!

Интересно, что если вашу идею (подставлять восклицательный знак) выразить через типизированный язык, то такой код даже не возможно скомпилировать! Почему же некоторые программисты на JS готовы вставлять такое в свой код?

Например, на C# можно записать подобную синтаксически правильную конструкцию, но её невозможно скомпилировать из-за противоречия в типе выражения!
using System;

class MainClass {
	public static void Main (string[] args) {
		!((Action)(() => {
			Console.WriteLine("1");
		}))();
	}
}


Даже если исправить противоречие... компилятор знает, что вы хотели всё-таки что-то другое!
using System;

class MainClass {
	public static void Main (string[] args) {
		!((Func<bool>)(() => {
			Console.WriteLine("123");
			return false;
		}))();
	}
}
В частности в ошибке компиляции говорится, что Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement. Видите, компилятор подсказывает, что всё-таки тут необходимо присвоение переменной!

Совершенно бессмысленный пример, показывающий правильное использование восклицательного знака! (Смотри также пост №5)
using System;

class MainClass {
	public static void Main (string[] args) {
		var ok = !((Func<bool>)(() => {
			Console.WriteLine("123");
			return false;
		}))();

		Console.WriteLine(ok);
	}
}

... и вообще, так обычно в C# не пишут! Всё намного проще!

Далее про JavaScript...
Нужен вызов функции? Пишете её, даёте ей имя и вызываете без всяких понтов, крестов и восклицательных знаков!
function main() {
    /* код программы */
}

main();

И что тут вам не понятно?

Нужен вызов анонимной функции? Пишете её, даёте ей имя (а можете и не давать) и вызываете без всяких понтов, крестов и восклицательных знаков!
(function main() {
    /* код программы */
})();

Хотя это рабочий код, но возникает вопрос, а зачем такое нужно? Оно может быть полезно, если main является асинхронной функцией (потому что вам потребовался await) или вы хотите обратить внимание на название функции (что это точка входа, всё начинается здесь)

Я думаю, в большинстве остальных случаев можно обойтись и блоком...
{
    /* код программы */
}


... или даже без него!
/* возможно импорт */
/* код программы */
/* экспорт */
Всё намного проще!
Ответить с цитированием
  #17 (permalink)  
Старый 02.07.2019, 09:30
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

j0hnik,
var time = performance.now();
var i = 10000000;
  while(i--) ;
time = performance.now() - time;
console.log('Время выполнения = ', time);

var time = performance.now();
var i = 10000000;
  while(i--) (()=>Math.random()*Math.random())();
time = performance.now() - time;
console.log('Время выполнения = ', time);

поменяйте местами вызов функций в своем примере
Ответить с цитированием
  #18 (permalink)  
Старый 02.07.2019, 10:30
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Poznakomlus
поменяйте местами вызов функций в своем примере
Результаты теста тоже поменялись местами... Или в чём заключается это злорадство?
Ответить с цитированием
  #19 (permalink)  
Старый 02.07.2019, 10:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Malleys
Не уклоняйтесь от восклицательного знака!
что это, о чём это, можно как то попроще, мне недоступна ваша логика.
Ответить с цитированием
  #20 (permalink)  
Старый 02.07.2019, 11:50
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

присоединяйтесь к тестам
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
Нужна помощь по слайдеру seoguru Работа 3 28.01.2013 22:02
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17