Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

И снова Javascript

Это из разряда Perl cannot be parsed:
foo = {}

[1,2,3].forEach(console.log)
Желание поддерживать зачем-то два синтаксиса (с точками с запятой и с синтаксически значимыми переводами строки) в языке с запутанной спецификацией и дебильным по своей сути оператором "запятая" приводит к неожиданному взаимодействию фич: парсится всё это как
foo = ({} [1,2,3]).forEach(console.log)
И вылетает, т.к. свойство {}[3] не определёно и у него нет метода forEach.

Диагностика этого смешная - копируешь [1,2,3].forEach в другое место - исключение пропадает, ставишь трай-кетч блок вокруг foreach - исключение пропадает :)
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments