为什么 offsetWidth return 未定义为 svg 的宽度?

Why does offsetWidth return undefined as the width of svg?

let svg = document.querySelector("svg");
console.log(svg.getBoundingClientRect().width);
console.log(svg.offsetWidth);
<svg viewBox="0 0 700 300">
  <path d="M0 300c150 0 50-300 200-300l300 0c150 0 50 300 200 300 h-700" />
</svg>

为什么 getBoundingClientRect() return 是 svg 的宽度而不是 offsetWidth

我可以忽略它并使用 getBoundingClientRect(),但我想知道为什么会这样。

因为 SVGElement 没有 offsetWidth 属性。 (MDN 将它 [仅在兼容 table] 中列为“非标准”,并且基本上没有浏览器支持它。)任何时候你从一个对象请求一个 属性 而该对象不有,你得到 undefined.

请记住 SVGElement 个实例不是 HTMLElement 个实例。