Comments 8
var user=API.users.get({user_id: args.user_id, fields: "counters"})[0];
if(user.counters.albums>0){
user=user+{albums: user+API.photos.getAlbums({owner_id: user.id})};
}
return user;
Странности с объектами/массивами легко объяснить, если вспомнить язык PHP. В нем массивы ассоциативные и запоминают порядок элементов. А функция json_encode для пустого массива возвращает именно "[]". Также, массивы копируются при присваивании.
Легко проверить что код на PHP дает примерно такие же результаты: http://ideone.com/MN5oHn
То есть, я думаю, что виртуальная машина может использовать язык PHP или интерпретатор байт-кодов этого языка, или код работы с массивами оттуда.
Правда, пример с return 1000000000 + 2000000000; ведет себя не как в PHP — там результат автоматически преобразуется во float, и переполнения не происходит.
Дай олимпиадникам задачу написать API – они изобретут для этого собственный язык.
появился C: давайте будем делать {} а не ваши бегины енды, появился Python: давайте делать от... Половина: замолчи
Анализ языка VKScript: JavaScript, ты ли это?