有下面一段代码,它的运行结果是什么:
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
总结:
变量与函数声明冲突会被忽略,
函数声明与函数声明冲突会覆盖