AH  yes, you are right, I misunderstand the code. It will not remove the change. But I think only define() can implement what I want then why I need to undefine it first?