Цитата:
|
|
Цитата:
Вы напрочь забыли (не знаете )про анализатор кода языка Да когда вы вызываете alert в своем синтетическом примере оно вычислит, потому как вы запрашиваете значение. Цитата:
|
:) соскучился по всем !!! :victory:
Цитата:
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); вот вычисляет все же, и забывает напрочь |
можно присвоить значение переменной для наглядности, время не изменится
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
У вас функция даже не возвращает булево значение! Интересно, что если вашу идею (подставлять восклицательный знак) выразить через типизированный язык, то такой код даже не возможно скомпилировать! Почему же некоторые программисты на 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) или вы хотите обратить внимание на название функции (что это точка входа, всё начинается здесь) Я думаю, в большинстве остальных случаев можно обойтись и блоком... { /* код программы */ } ... или даже без него! /* возможно импорт */ /* код программы */ /* экспорт */Всё намного проще! |
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); поменяйте местами вызов функций в своем примере :) |
Цитата:
|
Цитата:
|
присоединяйтесь к тестам
|
Часовой пояс GMT +3, время: 08:16. |