Я просматривал следующий код из https://www.dashingd3js.com/svg-paths-and-d3js сегодня. Мне пришло в голову, что все d3-коды являются переменными операторами; ничто, кажется, не «вызывает» это и говорит «теперь используйте эти определения переменных, чтобы нарисовать объекты svg». Поэтому мой вопрос: где происходит этот вызов. Является ли вызов в коде d3.min.js? Или это что-то о том, как определяются инструкции var или что-то еще? Спасибо за вашу помощь в этом фундаментальном вопросе.Где этот код d3 выполнен?
Также да: я пытался выяснить причину для себя в течение часа или около того. После этого я бы никогда не публиковал это, если бы это было не последнее средство.
<!DOCTYPE html>
<meta charset="utf-8">
<body>
<script src="d3.min.js"></script>
<script>
var lineData = [ { "x": 1, "y": 5}, { "x": 20, "y": 20},
{ "x": 40, "y": 10}, { "x": 60, "y": 40},
{ "x": 80, "y": 5}, { "x": 100, "y": 60}];
//This is the accessor function we talked about above
var lineFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear");
//The SVG Container
var svgContainer = d3.select("body").append("svg")
.attr("width", 200)
.attr("height", 200);
//The line SVG Path we draw
var lineGraph = svgContainer.append("path")
.attr("d", lineFunction(lineData))
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none");
</script>
</body>
</html>
спасибо. Объединяя приведенные выше ответы, я получаю следующее: (1) JS выполнит код на загрузке страницы, если нет других событий, которые связывают его выполнение с событиями (2) в этом коде, метод append заставляет элементы svg рисоваться , Один полезный эксперимент для меня заключался в том, чтобы уменьшить строку «Var lineGraph ...» до «svgContainer.append (« путь ») ..», и я обнаружил, что все еще выполнено. Это поведение оправдывало мои ожидания. Странно, что код, состоящий только из переменных defs, будет выполнен, чтобы что-то сделать, но со временем я подкорректирую свое понимание. – ouonomos
Почему это странно? Переменная def вызывает метод.Например, предположим, что мой код - var result = doLoadsOfStuffAndReturnCalculatedResult(); является относительно нормальным. Тем не менее, я думаю, что d3 включает в себя небольшой сдвиг в мышлении в целом, хотя, поэтому я думаю, что это хорошо для вас, чтобы поэкспериментировать с кодом, поскольку это помогает программированию в целом видеть несколько разные философии в коде. – Ian