首页 > 关于JS中的局部变量的一个问题

关于JS中的局部变量的一个问题

javascriptvar f = true;
if (f === true) {
  var a = 10;
}

function fn() {
  var b = 20;
  c = 30;
}

fn();
console.log(a);
console.log(b);
console.log(c);

同样是局部变量,为什么a能输出,b是不能输出?


这是个我犯了很久的错误,很长一段时间我都以为{…}内的新声明的变量是局部变量,后来我才发现function内的新声明的变量才是局部变量,而没有用var声明的变量在哪里都是全局变量。再次提醒切记只有function(){}内新声明的才能是局部变量,while{…}、if{…}、for(..) 之内的都是全局变量(除非本身包含在function内)。


js是函数级作用域,不是块级作用域。
简单的说
af的作用域相同。

【热门文章】
【热门文章】