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 相关文章推荐
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 Javascript
JS实现的相册图片左右滚动完整实例
Nov 23 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
js实现轮播图的完整代码
Oct 26 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
Sep 14 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
Node.js Event Loop各阶段讲解
Mar 08 Javascript
javascript实现异形滚动轮播
Nov 28 Javascript
Vue组件模板的几种书写形式(3种)
Feb 19 Javascript
ES11新增的这9个新特性,你都掌握了吗
Oct 15 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设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
python实现井字棋游戏
2020/03/30 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
法律专业自我鉴定
2013/10/03 职场文书
驻村工作先进事迹
2014/08/14 职场文书
申报优秀教师材料
2014/12/16 职场文书
四年级学生期末评语
2014/12/26 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python