AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 46

    +20
    меня порвало на лоскуты.
      +4
      И чо?
        +3
        Убило про {} + {}
        • UFO just landed and posted this here
          +4
          Мне понравилось!
          Только надо было оформить по другому — сделать картинку кликабельной и нарисовать стрелку play на ней.
            +17
            Для тех, кто собрался минусовать пост — сначала пройдите по ссылке под картинкой.
              +7
              Для тех у кого тормозит видео по линку — оно есть на трубе
              youtu.be/tErVvempcCU
                +2
                Не ожидал, что всё так плохо…
                Но проржался =)
                • UFO just landed and posted this here
                  • UFO just landed and posted this here
                      +1
                      Про приколы javascript можно посмотреть еще тут wtfjs.com/

                      Мой любимый:
                      Math.min() < Math.max();
                      // false
                        +8
                        Считать это поведение WTF могут только люди, которые вообще не знают JS. Все поведение очень логичное, в т.ч. ваше любимое.
                          0
                          Про мое любимое объясните? Мне честно не понятна логика таких действий. Ссылка сойдет.

                          WTF это когда результат не совпадает с ожиданием, и естественно если ты знаешь почему происходит та или иная ситуация, считать это WFT не будешь.
                            +18
                            Определение функции. Функция Math.min возвращает минимальное из переданного. Если аргументы не переданы, то она возвращает максимально возможное число. Это поведение — логичное и последовательное. Просто нужно понимать, что Math.min не возвращает минимально возможное число, оно возвращает минимальное из переданных. Math.max — возвращает самое большее число из переданных или минимально-возможное.

                            Для того, чтобы окончательно понять, представьте, что в max дополнительным аргументом передаётся -Infinity, а в min — +Infinity.

                            Если вы считаете это поведение нелогичным, то скажите, как необходимо было поступить авторам этих функций? Я бы поступил точно так же.

                            А если необходимо самое больше и самое маленькое число, то можно использовать +Infinity и -Infinity.

                            wtfjs сделан для запугивания новичков и это сплошная демагогия о том, какой сложный язык, стараясь привязать к документированному поведению какие-то недокументированные возможности, которые вроде бы должны быть. Это всё-равно, что жаловатся, что JS поведёт себя не так же, как питон и не учтёт отступы:

                            if (cond) 
                                code1();
                                code2();
                            
                              0
                              for(var i=0;i<10;++i);
                                 sum+=i;
                                0
                                for(var i=0;i<10;++i); //  тут стоит точка с запятой - тело цикла нет
                                   sum+=i; // будет ReferenceError или +10 если sum объявлен как число

                                var i=5;i=++i + ++i; //  i?
                                  +1
                                  Как сишник со стажем — скажу что it depends от компилятора
                                    0
                                    Скорее зависит от того, что принимает оператор +: уже преобразованные значения(будет 13) или ссылку объект, который он сам преобразует в значения(будет 14)
                                      0
                                      так тем ++i и отличается от i++ тем что один возвращает временную переменную и инкрементит, а второй инкрементит и возвращает.
                                      Именно по этому ++i и быстрее.
                                    0
                                    Ты там озвучь свой wat, если время будет.
                                –3
                                Вы могли не рассказывать так много. Все проясняет 1 фраза: «функция Math.min».
                                а я то дурак, думал что функции лучше со скобками в конце писать, оказывается надо просто заранее знать что имется в виде не константа -_-
                                  0
                                  Дык, они со скобками по условиям и пишутся:
                                  Math.min() < Math.max();
                                  
                                    0
                                    Пока придумывал остроумный комментарий забыл с чего все началось ))
                                  0
                                  Если не возражаете, поспрашиваю еще. Почему:
                                  function Dude(name){
                                  this.name = name;
                                  return [1, 2, 3];
                                  }
                                  new Dude('Bob');
                                  // [1, 2, 3]

                                  function Dude(name){
                                  this.name = name;
                                  return 3;
                                  }
                                  new Dude('Bob');
                                  // { name: 'Bob' }
                                    +1
                                    new:
                                    The object returned by the constructor function becomes the result of the whole new expression. If the constructor function doesn't explicitly return an object, the object created in step 1 is used instead. (Normally constructors don't return a value, but they can choose to do so if they want to override the normal object creation process.)


                                    Обратите внимание. Если конструктор вернул объект (именно объект, а не примитивное значение), то возвращается этот объект, иначе — возвращается значение this. К вашему примеру можно добавить такой:
                                    function Dude(name){
                                       this.name = name;
                                       return new Number(3);
                                    }
                                    
                                    new Dude('Bob'); // Number(3)


                                      0
                                      благодарю
                                    +1
                                    Я наверное какой то необычный программист, но я бы поднял исключение, если в функцию Max/Min не передано аргументов.
                                      0
                                      А зачем? Это исключительная ситуация, при которой лучше повалить всё приложение а не обработать найболее логичным образом?
                                      var minNextValue = Math.max.apply( max, fetchValuesFromDb() );
                                      
                                        0
                                        Это исключительная ситуация, при которой лучше повалить всё приложение
                                        как связано поднятие исключения и «повалить всё приложение»?

                                        а не обработать найболее логичным образом?
                                        поднять исключение и есть обработать наиболее логичным образом. Если нужно, что при отсутствии параметров функция вернула какое то дефолтовое значение — так никто не мешает написать какой нить minOrDefault
                                          0
                                          Функция отрабатывает строго по стандарту и вполне логично. Так в чём проблема? В том, что есть люди, которые не читают доков, а стараются угадать поведение функции по стандарту? Угадайте поведение функции Math.random она вернёт число от -Infinity до Infinity? От 0 до 1? В каждом языке — по разному.
                                          Поведение min и max логичное, стандартизованное и, главное, документированное. Так что не так?
                                            +1
                                            О сколько нам открытий чудных готовит чтение стандартов вслух :)
                                            –1
                                            вы наверное на php пишете?
                                              0
                                              Какое-то — это одна ситуация, логичное — совсем другая.
                                    0
                                    И в этом есть смысл. Например max:
                                    var max = -Infinity, 
                                        values = [];
                                    for (var i = values.length; i  --> 0;) {
                                        if (values[i] > max) {
                                            max = values[i];
                                        }
                                    }
                                    return max; // если values.length === 0 то вернется -Infinity
                                    
                                      0
                                      в нашем случае values=undefined
                                        0
                                        нет, в этом случае как раз values равно пустому объекту arguments. а может содержать значения.
                                        Math.max(   ) => values = []
                                        Math.max(1  ) => values = [1]
                                        Math.max(1,2) => values = [1,2]
                                          –1
                                          a = function(a){ return a.length;}
                                          function (a) { return a.length;}

                                          a();
                                          //error
                                            0
                                            Все понял
                                              +1
                                              a = function(){ return arguments.length }

                                              a(); // 0
                                              a(1); // 1
                                              a(1,2); // 1, 2
                                                0
                                                function test(a, b, c) {return arguments.length}
                                                test.length; // 3
                                                test(1,2,3,4,5,6); // 6
                                                
                                        0
                                        Возможно, это даже лучше, чем «BSD is dying».
                                          0
                                          У меня видео категорически отказалось грузиться (возможно, из-за хабраэффекта?)
                                          Вот оно же на YouTube: www.youtube.com/watch?v=9jD5rqukRmQ
                                            0
                                            А мне показалось странным вот такое поведение:
                                            Math.min(NaN,2,3);
                                            // NaN
                                            Math.max(NaN,2,3);
                                            // NaN
                                            

                                            выводится NaN, а не сообщение об ошибке или соответствующее из остальных чисел.
                                            Такие же результаты если передавать любые «NaN»-ы. А если вместо NaN передать пустой массив, булевское значение или пустую строку то всё норм. Видимо всё кроется в авто-приведении одних типов переменных к другим и выходит, что [] == "" == false == 0.
                                              0
                                              www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf страница 163
                                              min ( [ value1 [, value2 [, … ] ] ] )
                                              Given zero or more arguments, calls ToNumber on each of the arguments and returns the smallest of the resulting values.
                                              * If no arguments are given, the result is +Infinity.
                                              * If any value is NaN, the result is NaN.
                                              * The comparison of values to determine the smallest value is done as in 11.8.5 except that +0 is considered to be larger than -0.
                                              The length property of the min method is 2.
                                                +1
                                                Ситуация та же, что и с null в SQL

                                              Only users with full accounts can post comments. Log in, please.