JavaScript中重名的函数与对象示例详析
前言
本文主要给大家介绍了关于JavaScript中重名的函数与对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
JavaScript允许重复声明变量,后声明的覆盖之前的。
vara=1; vara='x'; console.log(a); //输出'x'
JavaScript允许重复定义函数。
JavaScript没有重载这个概念,它仅依据函数名来区分函数。
后定义的同名函数覆盖之前的,与参数无关。
functiontest(){
console.log("test");
}
test();//输出"testarg0+undefined"
functiontest(arg1){
console.log("testarg"+arguments.length+"+"+arg1);
}
test(1,2);//输出"testarg2+1"
实参个数如果比形参少,那么剩下的默认赋值为undefined;如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用arguments来获取剩下的参数)
functiontest(arg1){
for(vari=0;i
变量与函数重名的时候,变量生效
这涉及到了变量和函数的预解析:
-变量声明会被顶置,函数声明也会被顶置且比变量更先声明。
-变量的声明和赋值语句一起写时,JS引擎在解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置。
-声明过的变量不会再重复声明。
vara=100;
functiona(){
return"function";
}
console.log(a);//输出100
console.log(a());
/*
报错
UncaughtTypeError:aisnotafunction
(anonymousfunction)@test.html:9
*/
JS中有两种函数,一种是普通函数,一种是函数对象。下面的这种就是“函数对象”,它实际上是声明一个匿名函数,然后将该函数的init方法赋值给该变量。
vara=100;
vara=function(){
return"function";
}
console.log(a);
/*
输出
function(){
return"function";
}
*/
console.log(a());//输出"function"
函数与内部变量重名
定义普通函数,即在window变量下,定义一个key,它的名字为该函数名,值为该函数的地址。函数内部的this指向window对象。
functiona(){
console.log(this);//输出window{...}
this.a=1;//即window.a=1,此时window下的functiona已经被该变量覆盖了。
vara=5;//下面的这几个变量都是局部变量,仅在花括号范围内有效。
a=10;
varv="value"
return"function";
}
console.log(a);//输出functiona{...}
console.log(a());//输出"function"
console.log(a);//输出1
console.log(v);
/*
输出
UncaughtReferenceError:visnotdefined
(anonymousfunction)@mycolor.html:15
*/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。