a method is named and attached to an object. so, for example, a method is like a function but is contained inside a class. its scope is limited to that class, and cannot affect variables outside that class, even global variables. if you need to affect a variable outside of a class, just use a function (or routine) that is not contained in a class.
a function is named and returns a value.
a routine is like a function but does not need to return a value.
a procedure is named and may or may not return a value, but receives parameters.
i think the distinctions between a function and a routine are sort of old school. i don't think that distinction is important anymore.
so a function is like
function addOne(n) {
return n++;
}
routine is like
function doStuff(){
makeStuffHappen();
}
and a method is like
thing.destroy(){
thing.destroyed = true;
}
a procedure is like
makeApples(x){
makes x apples
}
edit: typos and made bad examples>.<;