D3:对象调用前的+运算符

Luk*_*uke 2 javascript d3.js

我不清楚+运算符在这个特定的上下文中做了什么,或者它通常在javascript中在下面的上下文中做了什么.投影功能里面.

 function agg_year(leaves) {
            var total = d3.sum(leaves, function(d) {
                return d['attendance'];
            });

            var coords = leaves.map(function(d) {
                return projection([+d.long, +d.lat]);
            });

            var center_x = d3.mean(coords, function(d) {
                return d[0];
            });

            var center_y = d3.mean(coords, function(d) {
                return d[1];
            });

            return {
              'attendance' : total,
              'x' : center_x,
              'y' : center_y
            };
        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*des 5

它在javascript中强制赋值给一个数字.因此,如果数组中有两个字符串值:

var latitude = '10'; //this is a string
var longitude = '20'; //this is a string
Run Code Online (Sandbox Code Playgroud)

这会创建一个字符串数组,对吗?

var coordinates = [latitude, longitude]; // -> two strings, ['10', '20'];
Run Code Online (Sandbox Code Playgroud)

现在,这会创建一个数字数组(+用于将值强制转换为数字):

var coordinates = [+latitude, +longitude]; // -> two numbers,  [10, 20];
Run Code Online (Sandbox Code Playgroud)

更多示例如下:

var a = null;
typeof a; //object.
typeof +a; //number
+a; //0

var b = '5';
typeof b; //string
typeof +b; //number
+b; //5
Run Code Online (Sandbox Code Playgroud)