This results in a lookup and a set (double the touching of the DOM). Can we bring it back to just setting? (`getDefaultValueForProperty` also can touch the DOM, so this isn't great overall). Then we can move the whole thing inside an if that checks `hasSideEffects` first.