Сообщение от рони
|
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))