考虑以下代码:
(function () {
'use strict';
delete document.body.dataset.state;
})();
Run Code Online (Sandbox Code Playgroud)
身体dataset是空的.Safari浏览器将所有DOMStringMap值-嗯,我猜是这样-因为ReadOnly,他们enumerable,configurable和writable描述符值都设置为false.这导致TypeError: Unable to delete property出现在上面提到的例子中.
但是在Chrome数据集中,属性描述符值设置为true(可以检查Object.getOwnPropertyDescriptor()),删除不存在的属性不会抛出错误.
那么,什么行为是正确的?该规范说明了readonly数据集,但可写DOMStringMap,所以我假设数据集属性必须是可删除的.我错过了什么吗?