必须的,你在函数func里定义了myname,执行的时候就不会去函数外面查找myname。
这个和javascript解析有关,所有变量都会最先被定义好
func实际上执行起来是像这个样子的:
function func() {
var myname;//定义变量
alert(i); // 弹出7
alert(myname); //myname现在并没有赋值,为undefined
myname = "local";//现在才正式赋值
....
}
你去掉func函数里面的var就能达到你想要的效果了
主要是下面的var myname = "local";编译是上面的就不存在了。执行时所以是未定义