函数内部变量与该函数名冲突会怎样

有下面一段代码,它的运行结果是什么:

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

2a在函数中被改掉,那么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

 

 

3fn是一个函数标识符,在该函数内部有变量与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

  

总结:

变量与函数声明冲突会被忽略,

函数声明与函数声明冲突会覆盖

 

转载于:https://www.cnblogs.com/aredleave/p/7566913.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值