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 03 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
jquery实现点击弹出层效果的简单实例
Mar 03 Javascript
php+js实现倒计时功能
Jun 02 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
NT IIS下用ODBC连接数据库
2006/10/09 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
详解Python中的各种函数的使用
2015/05/24 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
小学音乐教学反思
2014/02/05 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
导游欢送词
2015/01/31 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS