初学js,一个很简单的问题,为什么函数外访问不到函数内的全局变量
functiona1(){num=5;}alert(num);函数内不加var不是就成为全局变量了吗,为什么浏览器显示numisnotdefined...
function a1(){
num = 5;
}
alert(num);
函数内不加var不是就成为全局变量了吗,为什么浏览器显示num is not defined 展开
num = 5;
}
alert(num);
函数内不加var不是就成为全局变量了吗,为什么浏览器显示num is not defined 展开
展开全部
原因如下:
1、函数里面的变量不是全局变量,函数内部声明的变量一定是局部变量,所以想要外部访问是无法直接访问到的,请规范全局变量和局部变量的定义。
2、外部想要访问函数内的变量可以采用闭包来实现,代码实例如下:
functiontest(){
var x=10;
return function(){
return x;
}
}
//调用局部变量x,报错未定义
alert(x);
// 调用
vara=test();
alert(a());
这样可以实现外部访问内部变量。
展开全部
我说一下我的见解吧
你这里的NUM确实是隐式的全局变量我不否认,但是你这是在函数运行时才定义的
JS也是从上到下运行的,function在里面你要是不去调用,他就不会运行,所以此处的num是未定义的
你可以这么写
function a1(){
num = 5;
}
a1();
alert(num);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-06-18
展开全部
需要提前调用一下,可能js并不是编译期间提升其全局变量的地位的,只有当你主动调用一下,当运行时执行到赋值那句话时,其便会将其提升到全局变量。否则只会将其当做局部变量来处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你这样定义的是一个隐式的全局变量,需要运行一下函数a1(),这样子num就成了全局变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询