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 属性选择器element[herf*='value']使用示例
Oct 20 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
JavaScript String 对象常用方法详解
May 13 Javascript
简单的分页代码js实现
May 17 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
Bootstrap3 多选和单选框(checkbox)
Dec 29 Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 Javascript
AJAX XMLHttpRequest对象创建使用详解
Aug 20 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
php抓即时股票信息
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Angular 项目实现国际化的方法
2018/01/08 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python实现人民币大写转换
2018/06/20 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
简单了解Python生成器是什么
2019/07/02 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
报到证丢失证明
2014/01/11 职场文书
材料物理专业求职信
2014/09/01 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
小平您好观后感
2015/06/09 职场文书