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去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
jQuery实现验证年龄简单思路
Feb 24 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
Aug 10 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
jquery replace方法去空格
May 08 jQuery
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
Aug 31 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文章按日期(月日)SQL归档语句
2012/11/29 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
js实现中文实时时钟
2020/01/15 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
python列表与元组详解实例
2013/11/01 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
成功的酒店创业计划书
2013/12/27 职场文书
安全生产承诺书范文
2014/05/22 职场文书
个人四风对照检查材料
2014/09/26 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript