有下面一段代码,它的运行结果是什么:
b=fnnction c(){
a=1,b=2,c=3;
console.log(a);
console.log(b);
console.log(c);
}
b();
答案:
console.log(a); //1
console.log(b); //2
console.log(c); //function c(){...}
知识点:函数内部变量与该函数名冲突会怎样?
1、下面例子中fn只能在函数内部使用,在函数外部使用会报错,提示:fn is not undefined
2、a在函数中被改掉,那么fn这个函数再此次调用结束后会被清除,a会变成1;
var a=function fn(){
a=1;
console.log(a); // 1
console.log(fn); // function fn(){...}
}
console.log(a); //function fn(){...}
a();
console.log(a); //1
console.log(fn); //Uncaught ReferenceError: fn is not defined
3、fn是一个函数标识符,在该函数内部有变量与fn冲突,不会被覆盖;
var a=function fn(){
fn=10;
console.log(fn); // function fn(){...}
}
a();
console.log(fn); //Uncaught ReferenceError: fn is not defined
4、在该函数外部有变量与fn冲突,会被覆盖的:
function fn(){
console.log(fn); // function fn(){...}
}
fn =20;
console.log(fn); //20
总结:
变量与函数声明冲突会被忽略,
函数声明与函数声明冲突会覆盖