TL;DR
selectAll(null) , , "enter" , .
"enter"
, , "enter" D3.js. , , , D3 DOM.
D3.js, DOM, :
- ;
- , ;
- , ;
β 3 DOM "enter".
, D3.js "enter" - , , DOM. "enter", D3 , .
, / DOM:

DOM
.
...
var circles = svg.selectAll("circle")
.data(data)
... , . D3 lingo, "" .
...
.enter()
.append("circle");
... "enter", , .
, ( ), ( ) selectAll . , , svg <circle>, selectAll("circle") .
. <body> <p>, "enter" :
var body = d3.select("body");
var data = ["red", "blue", "green"];
var p = body.selectAll("p")
.data(data)
.enter()
.append("p")
.text(d=> "I am a " + d + " paragraph!")
.style("color", String)
<script src="https://d3js.org/d3.v4.min.js"></script>
Hide result, ? :
var body = d3.select("body");
var data = ["red", "blue", "green"];
var p = body.selectAll("p")
.data(data)
.enter()
.append("p")
.text(d=> "I am a " + d + " paragraph!")
.style("color", String)
<script src="https://d3js.org/d3.v4.min.js"></script>
<p>Look Ma, I'm a paragraph!</p>
Hide result: ! ?
, "", . ( "enter"), .
, selectAll("p"), , , <p> ! <p>.
, selectAll(null), , ! , , "enter" , .
, :
var body = d3.select("body");
var data = ["red", "blue", "green"];
var p = body.selectAll(null)
.data(data)
.enter()
.append("p")
.text(d=> "I am a " + d + " paragraph!")
.style("color", String)
<script src="https://d3js.org/d3.v4.min.js"></script>
<p>Look Ma, I'm a paragraph!</p>
Hide resultnull: , .
, selectAll(null) : DOM, -.
, jsPerf:
https://jsperf.com/selecting-null/1
selectAll(null) . , DOM, .
selectAll (null)
, selectAll(null) DOM. , .
, , , "" ( ""), selectAll(null). ( ), .
, , - :
var circles = svg.selectAll("circle")
.data(data);
circles.enter()
.append("circle")
.attr("foo", ...
circles.exit().remove();
circles.attr("foo", ...
, selectAll(null), , , .
PS: , selectAll(null) : https://github.com/d3/d3-selection/issues/79