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 相关文章推荐
JS声明变量背后的编译原理剖析
Dec 28 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
JavaScript建立一个语法高亮输入框实现思路
Feb 26 Javascript
浅谈JS中String()与 .toString()的区别
Oct 20 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
深入理解React高阶组件
Sep 28 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
JavaScript实现简单的弹窗效果
May 19 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 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批量采集下载美女图片的实现代码
2013/06/03 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
php集成动态口令认证
2016/07/21 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python随机取list中的元素方法
2018/04/08 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Python发展简史 Python来历
2019/05/14 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
学习python需要有编程基础吗
2020/06/02 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
打架检讨书50字
2014/01/11 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
采购员岗位职责
2015/02/03 职场文书