When an attribute object exists, but the value of that attribute is an empty string, getAttrs will return undefined for the attribute, no matter what the default value is. <input type="checkbox" name="attr_start_test">
<input type="text" name="attr_test_nodefault" value="">
<input type="text" name="attr_test_default" value="default">
<script type="text/worker">
on('change:start_test', () => {
getAttrs(['test_default', 'test_nodefault'], v => log(v));
});
</script> If you set the text inputs to some nonempty value, then clear them and tick the checkbox, both v.test_default and v.test_nodefault are undefined. This is not the case in the initial state of the sheet - when no attribute objects exists, it correctly logs "" and "default".