错误原因是因为你settimeout中函数加了引号,加了引号后不再从局部变量中找这个参数,而是到全局环境中找,全局函数当然没有你定义的这个sleep_move_inner了,解决办法是1 去掉双引号,只写函数名sleep_move_inner2 在全局作用域中定一个变量,在局部作用于中引用这个变量全局:var k;局部:k = sleep_move_inner