Наткнулся сегодня на забавнейшую хуйню. Кто думает что выдаст данный код на жээс?

var a = {
b: function(){
console.log(‘b’);
this.c = function(){
console.log(‘c’)
};
console.log(this.c);
}
}

a.c( a.b() );

Linux Nix Web Development - http://linuxoids.org/ image

Tagged with →  

25 Responses to Наткнулся сегодня на забавнейшую хуйню.

  1. XbiNo:

    Ответ нужно непременно обосновать.

  2. Hccon:

    А чего тут обосновывать? Вычисляем сначала аргументы, отрабатываем функцию.

    b
    function …
    c

  3. Hccon:

    А в некоторых случаях вообще ничего не вернёт, если объекта console у нас нету.

  4. XbiNo:

    консоль дадена богом.

  5. XbiNo:

    я бы не стал делать пост если бы было очевидно.

  6. XbiNo:

    а тем более прикладывать вот такого филосораптера с трубкой и в костюме.

  7. Oveer:

    так что тебя смущает то?

  8. Vormo:

    Баг Фаерфокса какой-то.

  9. XbiNo:

    опера согласна с лисой. хром даёт результат как написал ноччь, а ие говорит идите нахуй сразу.

  10. XbiNo:

    поведение всех можно понять логически. И по сути — пиздец звать функцию, которой нет с параметром, который во время вычисления её создаст чтоб было что звать.

  11. Vormo:

    у меня ИЕ 9 нормально выполняет, может и не баг, а особенности реализации )

  12. FMeSnow:

    а вот в реальной жизни такое кто-то и правда использует? и если да, то нахуя?

  13. Ihcnode:

    Дело в очередности вызова йункций и отсутствии предварительной проверки, мне кажется

  14. VonFcuk:

    бля, в смысле, вместо первой c описание функции.

  15. VonFcuk:

    а чего тут неочевидного-то?

  16. XbiNo:

    рефакторил код днём. Ну и дебажил до победного, разнося всё в мвц. И было что-то типа _self.ololo(mimimi.zhazhazha). Я поводил мышой по строке и понял что ololo андефайнд. Всё бы ок, но я ещё раз посмотрел какая была ошибка, а ошибка была что нет zhazhazha. Это показалось странным и я написал вот эту тестовую хуйню.

  17. XbiNo:

    тестил на 64 битном ие9. Он сказал что андефайнд в консоли и всё.

  18. RotZlo:

    Хуле блядь, гадать на кофейной гуще — идём в ECMA-262-3 спецификацию, в раздел 15.3 и читаем, кто правильно работает, а кто хуево

  19. Oveer:

    вобще надо не в 15 а в 11.2.3

  20. RotZlo:

    да там можно и в 10 параграф, всё равно ссылки друг на друга везде проставлены.
    Кстати, у тебя 262-5, но оно в этой части никак не отличается

  21. XbiNo:

    стало быть лиса — умница.

  22. AmtEkb:

    я так и не понял. По идее, должна выдаваться ошибка по пункту 2 алгоритма, а не по пункту 4. Но должна.
    То есть сначала проверяем, что функция есть, а уже потом вычисляем аргументы.

    Это логично. Если воспользоваться польской нотацией, выражение представляет собой применение операции «несуществующая функция» к какому-то аргументу. Сначала нужно определить, что за операция, существует ли она, определена ли, а уж потом браться за аргументы.

  23. Regwhite:

    был бы я интерпретатором, я бы нахуй послал

Добавить комментарий