この for ループを改善したいと思います。理想的には、変数 'nodeFound' を関数スコープ外にしたくないので、ループが完了した後ではなく、見つかったらすぐに 'nodeFound' を返したいと思います。
var nodeFound;
proto._getNodeById = function(id, node) {
var data = node || this._data;
var l = data.length;
var i;
for ( i = 0; i < l; i++) {
if (Number(id) === data[i].id) {
nodeFound = data[i];
} else {
if (data[i].children.length) {
this._getNodeById(id, data[i].children);
}
}
}
return nodeFound;
};