Comments 46
меня порвало на лоскуты.
+20
И чо?
+4
Убило про
{} + {}
+3
Мне понравилось!
Только надо было оформить по другому — сделать картинку кликабельной и нарисовать стрелку play на ней.
Только надо было оформить по другому — сделать картинку кликабельной и нарисовать стрелку play на ней.
+4
Для тех, кто собрался минусовать пост — сначала пройдите по ссылке под картинкой.
+17
Для тех у кого тормозит видео по линку — оно есть на трубе
youtu.be/tErVvempcCU
youtu.be/tErVvempcCU
+7
Не ожидал, что всё так плохо…
Но проржался =)
Но проржался =)
+2
UFO just landed and posted this here
UFO just landed and posted this here
Про приколы javascript можно посмотреть еще тут wtfjs.com/
Мой любимый:
Мой любимый:
Math.min() < Math.max();
// false
+1
Считать это поведение WTF могут только люди, которые вообще не знают JS. Все поведение очень логичное, в т.ч. ваше любимое.
+8
Про мое любимое объясните? Мне честно не понятна логика таких действий. Ссылка сойдет.
WTF это когда результат не совпадает с ожиданием, и естественно если ты знаешь почему происходит та или иная ситуация, считать это WFT не будешь.
WTF это когда результат не совпадает с ожиданием, и естественно если ты знаешь почему происходит та или иная ситуация, считать это WFT не будешь.
0
Определение функции. Функция Math.min возвращает минимальное из переданного. Если аргументы не переданы, то она возвращает максимально возможное число. Это поведение — логичное и последовательное. Просто нужно понимать, что Math.min не возвращает минимально возможное число, оно возвращает минимальное из переданных. Math.max — возвращает самое большее число из переданных или минимально-возможное.
Для того, чтобы окончательно понять, представьте, что в max дополнительным аргументом передаётся -Infinity, а в min — +Infinity.
Если вы считаете это поведение нелогичным, то скажите, как необходимо было поступить авторам этих функций? Я бы поступил точно так же.
А если необходимо самое больше и самое маленькое число, то можно использовать +Infinity и -Infinity.
wtfjs сделан для запугивания новичков и это сплошная демагогия о том, какой сложный язык, стараясь привязать к документированному поведению какие-то недокументированные возможности, которые вроде бы должны быть. Это всё-равно, что жаловатся, что JS поведёт себя не так же, как питон и не учтёт отступы:
Для того, чтобы окончательно понять, представьте, что в max дополнительным аргументом передаётся -Infinity, а в min — +Infinity.
Если вы считаете это поведение нелогичным, то скажите, как необходимо было поступить авторам этих функций? Я бы поступил точно так же.
А если необходимо самое больше и самое маленькое число, то можно использовать +Infinity и -Infinity.
wtfjs сделан для запугивания новичков и это сплошная демагогия о том, какой сложный язык, стараясь привязать к документированному поведению какие-то недокументированные возможности, которые вроде бы должны быть. Это всё-равно, что жаловатся, что JS поведёт себя не так же, как питон и не учтёт отступы:
if (cond)
code1();
code2();
+18
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?
0
Как сишник со стажем — скажу что it depends от компилятора
+1
Скорее зависит от того, что принимает оператор +: уже преобразованные значения(будет 13) или ссылку объект, который он сам преобразует в значения(будет 14)
0
Вот этого достаточно :) gist.github.com/1123026
0
Вы могли не рассказывать так много. Все проясняет 1 фраза: «функция Math.min».
а я то дурак, думал что функции лучше со скобками в конце писать, оказывается надо просто заранее знать что имется в виде не константа -_-
а я то дурак, думал что функции лучше со скобками в конце писать, оказывается надо просто заранее знать что имется в виде не константа -_-
-3
Если не возражаете, поспрашиваю еще. Почему:
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' }
0
new:
Обратите внимание. Если конструктор вернул объект (именно объект, а не примитивное значение), то возвращается этот объект, иначе — возвращается значение this. К вашему примеру можно добавить такой:
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)
+1
Я наверное какой то необычный программист, но я бы поднял исключение, если в функцию Max/Min не передано аргументов.
+1
А зачем? Это исключительная ситуация, при которой лучше повалить всё приложение а не обработать найболее логичным образом?
var minNextValue = Math.max.apply( max, fetchValuesFromDb() );
0
Это исключительная ситуация, при которой лучше повалить всё приложение
как связано поднятие исключения и «повалить всё приложение»?
а не обработать найболее логичным образом?
поднять исключение и есть обработать наиболее логичным образом. Если нужно, что при отсутствии параметров функция вернула какое то дефолтовое значение — так никто не мешает написать какой нить minOrDefault
как связано поднятие исключения и «повалить всё приложение»?
а не обработать найболее логичным образом?
поднять исключение и есть обработать наиболее логичным образом. Если нужно, что при отсутствии параметров функция вернула какое то дефолтовое значение — так никто не мешает написать какой нить minOrDefault
0
Функция отрабатывает строго по стандарту и вполне логично. Так в чём проблема? В том, что есть люди, которые не читают доков, а стараются угадать поведение функции по стандарту? Угадайте поведение функции
Поведение min и max логичное, стандартизованное и, главное, документированное. Так что не так?
Math.random
она вернёт число от -Infinity до Infinity? От 0 до 1? В каждом языке — по разному.Поведение min и max логичное, стандартизованное и, главное, документированное. Так что не так?
0
вы наверное на php пишете?
-1
Какое-то — это одна ситуация, логичное — совсем другая.
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]
0
Возможно, это даже лучше, чем «BSD is dying».
0
У меня видео категорически отказалось грузиться (возможно, из-за хабраэффекта?)
Вот оно же на YouTube: www.youtube.com/watch?v=9jD5rqukRmQ
Вот оно же на YouTube: www.youtube.com/watch?v=9jD5rqukRmQ
0
А мне показалось странным вот такое поведение:
выводится NaN, а не сообщение об ошибке или соответствующее из остальных чисел.
Такие же результаты если передавать любые «NaN»-ы. А если вместо NaN передать пустой массив, булевское значение или пустую строку то всё норм. Видимо всё кроется в авто-приведении одних типов переменных к другим и выходит, что [] == "" == false == 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.
0
Ситуация та же, что и с null в SQL
+1
Sign up to leave a comment.
Wat