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 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
jQuery DOM操作小结与实例
Jan 07 Javascript
js 固定悬浮效果实现思路代码
Aug 02 Javascript
JavaScript设置首页和收藏页面的小例子
Nov 11 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
Validform表单验证总结篇
Oct 31 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
May 09 Javascript
微信小程序 swiper组件构建轮播图的实例
Sep 20 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
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+mysql分页代码详解
2008/03/27 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
php微信开发之图片回复功能
2018/06/14 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
js重写方法的简单实现
2016/07/10 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
jupyter notebook 多行输出实例
2020/04/09 Python
jupyter 导入csv文件方式
2020/04/21 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
《藏戏》教学反思
2014/02/11 职场文书
出纳担保书范文
2014/04/02 职场文书
监察建议书格式
2014/05/19 职场文书
运动员获奖感言
2014/08/15 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
一起来学习Python的元组和列表
2022/03/13 Python