Если вы можете использовать ES7 (а прокладки доступны, если вы не можете), вы можете использовать это, чтобы избежать повторения объекта дважды:
Object.entries(obj).every(([k, v]) => v === null || k === 'scores');
Object.entries
работаетв каждом текущем основном браузере, кроме MSIE.
Другое преимущество Object.entries
состоит в том, что, поскольку обратному вызову передаются и ключ, и значение, нет необходимости обращаться к obj
в обратном вызове, что, в свою очередь,вынуждает использовать встроенную функцию, формирующую замыкание над obj
.С .entries()
вполне возможно сделать обратный вызов отдельной функцией, что было бы особенно важно, если бы код становился намного длиннее, или если эта логика обратного вызова требовалась в нескольких местах.