All streams
Search
Write a publication
Pull to refresh

Comments 8

Объекты, кстати, можно «складывать» через + с объединением. JS так не умеет. Присутствующие в левом объекте ключи при этом перезапишутся соответствующими в правом. В своё время очень часто пользовался этой фичей, когда, например, надо было вернуть какие-нибудь опциональные поля:

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;

> JS так не умеет


Умеет, через spread operator:


c = { ...a, ...b } // c = a + b

Странности с объектами/массивами легко объяснить, если вспомнить язык PHP. В нем массивы ассоциативные и запоминают порядок элементов. А функция json_encode для пустого массива возвращает именно "[]". Также, массивы копируются при присваивании.


Легко проверить что код на PHP дает примерно такие же результаты: http://ideone.com/MN5oHn


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


Правда, пример с return 1000000000 + 2000000000; ведет себя не как в PHP — там результат автоматически преобразуется во float, и переполнения не происходит.

Это объясняет и хранение объектов по значению, а не по ссылке.

Дай олимпиадникам задачу написать API – они изобретут для этого собственный язык.

было бы не плохо, если бы новый язык хотя бы содержал какие то новые концепты, а то всё пермутация уже существующих фич. Так можно языки изобретать по 100 в день.
UFO landed and left these words here

появился C: давайте будем делать {} а не ваши бегины енды, появился Python: давайте делать от... Половина: замолчи

Sign up to leave a comment.

Articles