js中方法带有参数和不带参数对方法内部没用var定义的变量有啥影响?
varscope='global';functionfn(scope){alert(scope);scope='local';//这块由于未用var声明变量,所以导致作用...
var scope = 'global';
function fn(scope) {
alert(scope);
scope = 'local'; //这块由于未用var声明变量,所以导致作用域范围是全局,但是输出的结果好像作用域范围是局部?
alert(scope);
}
fn(); //输出结果?
alert(scope); //输出结果? 展开
function fn(scope) {
alert(scope);
scope = 'local'; //这块由于未用var声明变量,所以导致作用域范围是全局,但是输出的结果好像作用域范围是局部?
alert(scope);
}
fn(); //输出结果?
alert(scope); //输出结果? 展开
2019-05-02
展开全部
你把你的代码放在你的环境里运行一下,自然就得到结果了。
js在不同的解析方式下得到的结果是不一样的。所以,var的用法实际上有些混乱。
所以后来的js版本提出了let代替var,用于将变量的作用域更加精准。
js在不同的解析方式下得到的结果是不一样的。所以,var的用法实际上有些混乱。
所以后来的js版本提出了let代替var,用于将变量的作用域更加精准。
更多追问追答
追问
控制台输出结果:
fn() //undefined , local
alert(scope)//global
但是我理解的是,局部变量没有用var来定义,它的作用域就是全局变量,作用域范围是全局,所以输出结果应该是
fn() // global local
alert(scope)//local
两者结果完全不一样 ??
追答
因为function fn(scope)里面的scope的原因,你把那个参数去掉就实现你要的效果了。参数尽量不要用全局变量的名字。因为js的作用域的问题,所以变量不要重名。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询