Javascript HTML5数据属性将null和未定义转换为字符串
考虑下面来自HTML文件的示例代码:Javascript HTML5数据属性将null和未定义转换为字符串,javascript,html,casting,null,undefined,Javascript,Html,Casting,Null,Undefined,考虑下面来自HTML文件的示例代码: <div id="book" data-id="47909" data-title="Under The Dome" data-author="Stephen King" data-year="2009"> </div> 每当我将某个属性设置为null或undefined时,它会分别将其设置为字符串“null”、“undefined”: book.dataset.author = nul
<div id="book"
data-id="47909"
data-title="Under The Dome"
data-author="Stephen King"
data-year="2009">
</div>
每当我将某个属性设置为null
或undefined
时,它会分别将其设置为字符串“null”、“undefined”:
book.dataset.author = null
typeof book.dataset.author
"string"
book.dataset.year = undefined
typeof book.dataset.year
"string"
当
有人能解释一下它为什么会这样吗?这是否与最终所有内容都将转换为字符串这一事实有关,因为它是一个元素属性
谢谢 从
HtmleElement.dataset属性允许在读和写操作中进行访问
写入模式,写入到上设置的所有自定义数据属性(data-*)
元素,无论是在HTML中还是在DOM中。这是一张DOMString的地图,一张
每个自定义数据属性的条目
本质上,这意味着所有属性都转换为字符串
String(null)
// 'null'
String(undefined)
// 'undefined'
依照
获取时,dataset IDL属性必须返回其
关联的元素就是这个元素
根据
属性具有名称空间(null或非空字符串),名称空间
前缀(null或非空字符串)、本地名称(非空字符串),
值(字符串)和元素(null或元素)
因此,该值在返回之前被强制转换为字符串
String(null); //"null"
String(undefined); //"undefined"
String(1); //"1"
第1点:在下面,您将值设置为
null
book.dataset.author = null
这意味着您将值设置为null
,但默认情况下,对于HTML中的数据集,数据类型为String
第2点:在下面的代码中
let a = null;
值为
null
,但数据类型取决于JavaScript中的值,因此,无论何时默认值为null,它都是对象
属性值只能是字符串。它可能正在将null
和undefined
转换为String(null)
和String(undefined)
。
book.dataset.author = null
let a = null;