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 相关文章推荐
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
Js数组扁平化实现方法代码总汇
Nov 11 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
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python的多态性实例分析
2015/07/07 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
使用Python读取大文件的方法
2018/02/11 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
通过Python实现一个简单的html页面
2020/05/16 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
高一军训的心得体会
2014/09/01 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
2014年宣传思想工作总结
2014/12/10 职场文书
护士自荐信怎么写
2015/03/06 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电