【发布时间】:2016-08-21 05:24:55
【问题描述】:
我是一个新手,正在开发一个使用 HTML、JavaScript (Angular 1.5.0) 和 CSS 的小型 Web 应用程序。我正在使用 Grunt 来处理、jslint、缩小我的 javascript 和 CSS 文件。我的 Javascript 代码包含由 d3.js 创建的 SVG 图像。
我目前从 jshint 收到以下警告:
line 1932 col 32 Don't make functions within a loop.
如何重写以下代码以消除此警告?
Line #1924 for (var j = 0; j <= 5; j++) {
Line #1925 var myVarX = j * 100;
Line #1926 var myVarY = j * 200;
Line #1927 var myText = self.svgContainer.append("text")
Line #1928 .attr("x", myVarX)
Line #1929 .attr("y", myVarY)
Line #1930 .text("Hello World")
Line #1931 .attr("fill", "black")
Line #1932 .attr("transform", function(d){
Line #1933 var bb = this.getBBox();
Line #1934 leftBoundary = bb.x + (bb.width / (-2));
Line #1935 return "translate(" + (bb.width / (-2)) + ", 0)";
Line #1936 }
Line #1937 )
Line #1938 if (leftBoundary > centerX + 5)
Line #1939 myText.style("display", "block");
Line #1940 else
Line #1941 myText.remove();
Line #1942 }
【问题讨论】:
-
在循环外定义它并使用
.attr('transform', NAMEOFYOURFUNCTION)调用它。 -
jshint 会发出警告,因为每次循环迭代都会创建新函数,并且它对性能的影响很大。 @str 是对的,只要在循环范围之外定义这个函数,然后调用它
标签: javascript angularjs d3.js jshint grunt-contrib-jshint