js获取不到全局变量值

(function(){varmyname="global";//全局变量vari=7;alert(myname);functionfunc(){alert(i);//弹... (function(){
var myname = "global"; // 全局变量
var i=7;
alert(myname);
function func() {
alert(i); // 弹出7
alert(myname); //获取不到全局变量值
var myname = "local";
alert(myname); // "local"
}
func();})();

第7行怎么获取不到“global”,这不是全局变量吗, 第六行却能有值呢
展开
 我来答
xiangyuecn
推荐于2018-05-11 · TA获得超过336个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:307万
展开全部

必须的,你在函数func里定义了myname,执行的时候就不会去函数外面查找myname。


这个和javascript解析有关,所有变量都会最先被定义好


func实际上执行起来是像这个样子的:

function func() {
    var myname;//定义变量
    alert(i); // 弹出7
    alert(myname); //myname现在并没有赋值,为undefined
    myname = "local";//现在才正式赋值
    ....
}


你去掉func函数里面的var就能达到你想要的效果了

wjm0506
2014-06-23 · TA获得超过147个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:174万
展开全部
主要是下面的var myname = "local";编译是上面的就不存在了。执行时所以是未定义
追问
试验过了,原来如此,那为什么var myname = "local";编译过了,值不是local呢,是未定义呢
追答
这个真的不好解释。因为var myname = "local"还没执行到所以没有赋值。这样的也只有像js这样的弱语言可以通过。其他的都会报重名。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式