JavaScript中重名的函数与对象示例详析


Posted in Javascript onSeptember 28, 2017

前言

本文主要给大家介绍了关于JavaScript中重名的函数与对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

JavaScript 允许重复声明变量,后声明的覆盖之前的。

var a = 1;
var a = 'x';
console.log(a);
//输出'x'

JavaScript允许重复定义函数。

JavaScript没有重载这个概念,它仅依据函数名来区分函数。

后定义的同名函数覆盖之前的,与参数无关。

function test() {
 console.log("test");
}
test(); //输出 "test arg0 + undefined"

function test(arg1) {
 console.log("test arg" + arguments.length + " + " + arg1);
}
test(1,2); //输出 "test arg2 + 1"

实参个数如果比形参少,那么剩下的默认赋值为undefined;如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用arguments来获取剩下的参数)

function test(arg1) {
 for(var i=0; i<arguments.length; i++) {
 console.log(arguments[i]);
 }
}
test(1,2); //输出 1 2

变量与函数重名的时候,变量生效

这涉及到了变量和函数的预解析:

- 变量声明会被顶置,函数声明也会被顶置且比变量更先声明。

- 变量的声明和赋值语句一起写时,JS引擎在解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置。

- 声明过的变量不会再重复声明。

var a = 100;
function a() {
 return "function";
}
console.log(a); //输出 100
console.log(a()); 
/*
报错
Uncaught TypeError: a is not a function
 (anonymous function) @test.html:9
*/

JS中有两种函数,一种是普通函数,一种是函数对象。下面的这种就是“函数对象”,它实际上是声明一个匿名函数,然后将该函数的init方法赋值给该变量。

var a = 100;
var a = function() {
 return "function";
}
console.log(a);
/* 
输出
function() {
 return "function";
}
*/
console.log(a()); //输出 "function"

函数与内部变量重名

定义普通函数,即在window变量下,定义一个key,它的名字为该函数名,值为该函数的地址。函数内部的this指向window对象。

function a() {
 console.log(this); //输出 window{...}
 this.a = 1;  //即 window.a = 1,此时window下的function a已经被该变量覆盖了。
 var a = 5;  //下面的这几个变量都是局部变量,仅在花括号范围内有效。 
 a = 10;
 var v = "value"
 return "function";
}
console.log(a);  //输出 function a {...}
console.log(a()); //输出 "function"
console.log(a);  //输出 1
console.log(v);
/*
输出
Uncaught ReferenceError: v is not defined
 (anonymous function) @ mycolor.html:15
*/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery 三击事件实现代码
Sep 11 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
vue双向绑定的简单实现
Dec 22 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
微信小程序实现底部导航
Nov 05 Javascript
JavaScript惰性载入函数实例分析
Mar 27 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 Javascript
原生js实现弹幕效果
Nov 29 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
Sep 28 #Javascript
微信小程序下拉刷新界面的实现
Sep 28 #Javascript
详解Vuex中mapState的具体用法
Sep 28 #Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 #Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
Sep 28 #Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 #Javascript
Node.js学习之查询字符串解析querystring详解
Sep 28 #Javascript
You might like
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python编写微信公众号首图思路详解
2019/12/13 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
园林资料员岗位职责
2013/12/30 职场文书
司仪主持词两篇
2014/03/22 职场文书
初中生期末评语大全
2014/04/24 职场文书
银行求职信范文
2014/05/26 职场文书
公司任命书模板
2014/06/06 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
PHP中->和=>的意思
2021/03/31 PHP