return 为返回,每个函数调用另一个函数,都会将被调函数的指令地址存于主调函数的栈中,函数层层调用,栈也层层叠加,在return时,当前函数返回给上级函数,直至上级函数return才返回给上上级函数,同时return的函数栈释放,以此类推。
throw 为抛出异常,其目标不再是上层函数,而是try块,try块在哪,它在哪里停止,在层层调用函数下,底层函数throw,会按顺序释放栈,直至遇到try块。
简单一句话:调用return的函数返回上一级,直至在上一级遇到return才会返回上上级,而上一级return之前的语句照常执行。
调用throw,自下往上以此释放栈,直到在某一级函数遇见try块,中间级函数的其他代码部分无法继续执行。