DOM 节点和 javascript 命名空间之间的关系是什么?

What is the relationship between DOM nodes and the javascript namespace?

在这个例子中,为什么变量 foo 没有引发 ReferenceError?没有变量声明,但在呈现 DOM 之后它显然在范围内。 DOM 节点 ID 和 javascript 命名空间之间有什么关系?我是 运行 这个和 jest

import React from 'react';
import { render } from '@testing-library/react'

test('renders a div', () => {
  const { utils } = render(<div id="foo"/>)
  expect(foo).toBe(true)
})

笑话报道:

Expected: true
Received: <div id="foo" />

我真的希望测试会崩溃,因为在我的真实示例中,我不小心将一个未定义的变量传递给了 expect(),它恰好共享了呈现的 DOM 节点 ID 的名称。

有id的元素成为全局变量

不是同一个问题,但是你的问题的答案是另一个SO问题:

Do DOM tree elements with ids become global variables?