I'm trying to wrap my head around anonymous and named functions and I have this Javascript code here:
travelNode = min = function(travelNode) {
console.log(travelNode);
if(travelNode.left === null)
return travelNode;
else
return min(travelNode.left);
}(travelNode.right);
When I try and run this block, I get a ReferenceError: min is not defined. However, when I change the code to this:
travelNode = function min(travelNode) {
console.log(travelNode);
if(travelNode.left === null)
return travelNode;
else
return min(travelNode.left);
}(travelNode.right);
and it works just fine.
Obviously, the first one uses anonymous functions and the second a named function. However, why does the second one work but the first one doesn't? How would I fix the first one?
Edit: Here's the entire code block -
delete: function(data) {
var deleteHelper = function(travelNode) {
if(travelNode === null)
return null;
if(data < travelNode.data)
travelNode.left = deleteHelper(travelNode.left);
else if(data > travelNode.data)
travelNode.right = deleteHelper(travelNode.right);
else {
if(travelNode.right === null)
return travelNode.left;
else if(travelNode.left === null)
return travelNode.right;
travelNode = min = function(travelNode) {
console.log(travelNode);
if(travelNode.left === null)
return travelNode;
else
return min(travelNode.left);
}(travelNode.right);
}
return travelNode;
};
this.root = deleteHelper(this.root);
}
travelNodeandmindeclared? Can you post a demo to reproduce the problem?var min; travelNode = min = function(travelNode) {