Показать сообщение отдельно
  #8 (permalink)  
Старый 26.07.2017, 10:42
Аспирант
Отправить личное сообщение для shoopik Посмотреть профиль Найти все сообщения от shoopik
 
Регистрация: 02.07.2017
Сообщений: 83

Сообщение от рони Посмотреть сообщение
if(mas[y]=== null) mas[y] = {}
else mas[y] =mas[y]
нет ключей length = 0 , !0 === true.
условно if(mas[y] === {}) то удаляем mas[y] , так как он пуст.
Спасибо, эт я понял, не совсем понял запись вида:
(mas[y]= mas[y]||{}) && mas[y][x]==1 ?  (delete mas[y][x],!Object.keys(mas[y]).length && delete mas[y],ctx.clearRect(x,y,10,10)) : (mas[y][x]=1,ctx.fillRect(x,y,10,10));

Получается здесь типа такого:
если выполняется условие
mas[y]= mas[y]||{}) && mas[y][x]==1

тогда жс делает
1) delete mas[y][x], 2)  !Object.keys(mas[y]).length && delete mas[y], 3)  ctx.clearRect(x,y,10,10))
-вот эту часть не понял, по отдельности то понял, как они вместе работают я не понял
например есть mas[150][50]

1) delete mas[150][50] - удаляет эти элементы, дальше идёт
2)мы же уже удалили, зачем опять ? он же пустой у нас
и всё равно не догоняю запись такую: !x && y - я понял что они по отдельности делают, не понял про &&, перечитал про логические операторы, не догоняю
Цитата:
В классическом программировании И возвращает true, если оба аргумента истинны, а иначе – false:
3) очищает квадратик, ну это понял

если условие не выполняется , тогда
(mas[y][x]=1,ctx.fillRect(x,y,10,10))

Последний раз редактировалось shoopik, 26.07.2017 в 10:47.
Ответить с цитированием