以下代码执行结果是什么?

时间:2021-09-25 16:12:19

以下代码执行结分别是什么?

var 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=10; b is not defined ;  c =30;

解析:“===”:等号两边必须完全相同,定义了f=true;所以执行f===true,是为真,则定义a=10;在Javascript中没有块级作用域,所以if语句中的变量可以被外部访问;

  执行函数fn();的时候,在函数内部定义了一个变量b,这个变量只在函数内部有效,虽然Javascript中没有块级作用域,但是函数内部定义的变量,在外部无法被外部访问                 的。而c=10;这里会产生变量提升,在程序的开头会自动补上var c; 在函数里只是给c进行了赋值操作,所以在外面任然可以访问c,并且此时的c=30.