详解JS中变量名和函数名同名问题

JS编程时应该尽量避免变量名和函数名同名,否则会发生相互覆盖的问题.从实际测试效果来看,这种覆盖可以分为两种情况:

    定义变量时只使用var定义变量,不分配变量初始值,此时函数的优先级更高,函数会覆盖变量; 定以变量时为变量指定了初始值,此时变量的优先级更高,变量会覆盖函数.

代码举例如下:

<script>
	function a(){}
	var a;
	console.log(a);
	var b;
	function b(){}
	console.log(b)
	var c=1;
	function c(){}
	console.log(c);
	function d(){}
	var d=1;
	console.log(d);
</script>

运行结果如下图: 上面代码开始分别定义了名为a、b的函数和变量,由于定义变量a、b时并未指定其初始值,因此不管这些变量放在同名的函数名之前还是之后,变量都会被函数覆盖;

代码接下来定义了名为c、d的函数和变量,由于定义变量时为c、d变量指定了初始值,因此不管这些变量放在同名的函数名之前还是之后,变量都会覆盖函数.

经验分享 程序员 微信小程序 职场和发展