私は、HTML、JavaScript(Angular 1.5.0)& CSSを使用する小さなWebアプリケーションを開発している初心者です。私はGruntを使って、jslintを処理して、javascriptとCSSファイルを小さくしています。私のJavascriptコードには、d3.jsによって作成されたSVGイメージが含まれています。JSHintの警告を避けるために、このJavascriptコードをどのように書き直すのですか?
私は現在、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)'を使用して呼び出します。 – str
jshintは、それぞれのループの繰り返し新しい関数が作成され、パフォーマンスが変わっているので、警告が表示されます。 @strは正しいですが、ループスコープの外でこの関数を定義し、それを –