js函数的定义及同名函数覆盖问题
js函数的定义
- 用函数声明语法定义
- 用函数表达式定义
- 使用Function的构造函数
- 当分别用前两种方式定义同一个函数时
用函数声明语法定义
function add(num1,num2){var sum = sum1 + sum2;return sum;
}
console.log(add(1,2));//3
用函数表达式定义
形式一
var sum = function(num1,num2){var sum = sum1 + sum2;return sum;
}
console.log(sum(1,2));//3
形式二
var sum = function s(num1,num2){var sum = sum1 + sum2;return sum;
}
console.log(sum(1,2));//3
形式二的作用等同于形式一,而且原函数名s就不代表函数了,等同于一个匿名函数。如果执行s(1,2)将会报错
使用Function的构造函数
var sum = new Function("num1","num2","num=num1+num2;return num");
console.log(sum(1,2));//3
当分别用前两种方式定义同一个函数时
- 首先我们知道:JS函数没有重载,后面定义的同名函数会覆盖掉之前的函数。函数名是一个指针,值是一段字符串。
定义的先后顺序会导致不同的结果,看下面两个例子
- 后用函数表达式定义
结果符合我们的预期
function fn1(){alert("Hello World!");
}
fn1();//Hello World!
var fn1 = function(){alert("Hello!");
}
fn1();//Hello!
- 先用函数表达式定义
为什么第二次输出的还是Hello, 而不是Hello World!
原有由下:解析器会首先读取函数声明,再执行代码;而函数表达式的函数则会在执行到的时候解析器才会去解析。所以JavaScript引擎会提升函数声明到顶端(即相当于先用了函数声明定义,再用了函数表达式定义),而变量声明只是变量的声明部分提升,赋值并不执行。
var fn1 = function(){alert("Hello!");
}
fn1();//Hello!
function fn1(){alert("Hello World!");
}
fn1();//Hello!
js函数的定义及同名函数覆盖问题相关推荐
- 前端:JS/22/函数(函数的概念,函数的定义格式,函数定义格式的说明,函数的调用,函数的参数),全局变量和局部变量,拷贝传值和引用传址,匿名函数,二维数组,对象,自定义对象的创建
函数 1,函数的概念 函数,是将一段公共的代码进行封装,给它起个名字叫"函数" 函数可以一次定义,多次调用:函数可以将常用的功能代码,进行封装,如:用户名的验证,验证码函数,邮箱验 ...
- python函数定义与参数_Python函数的定义方式与函数参数问题实例分析
本文实例讲述了Python函数的定义方式与函数参数问题.分享给大家供大家参考,具体如下: 涉及内容: 函数的定义方式 函数的文字描述 空操作语句 位置参数 默认参数 关键参数 可变长度参数 函数的定义 ...
- python 定义函数方法,python中函数如何定义?python函数的调用方法介绍
本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...
- node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...
函数嵌套 在一个函数内定义了另一个函数 如图,定义了一个outer函数,然后在outer函数里面又定义了一个inner()函数,此时我们只能在outer函数调用inner()函数,如果在outer函数 ...
- python函数参数定义顺序_Python函数定义-位置参数-返回值
原标题:Python函数定义-位置参数-返回值 1 函数介绍 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多 ...
- 可以在一个函数中定义另一个函数_第5周 定义一个函数
亲爱的观众老爷们,早上好! 编程大师Martin Fowler先生曾经说过:"代码有很多种坏味道,重复是最坏的一种!",要写出高质量的代码首先要解决的就是重复代码的问题. 那么有什 ...
- gdb 笔记(03)— 某一行设置断点、为函数(单个唯一函数、多个同名函数、使用正则)设置断点、设置条件断点、设置临时断点
断点 breakpoint,即为了调试的需要,在程序中设置一些特殊标志,代码执行到这些具有特殊标志的位置时会暂停.一旦程序暂停,我们就可以查看或者修改程序运行的一些信息,比如内存信息.堆栈信息等,并且 ...
- matlab创建一个函数,matlab定义一个新函数
本文收集整理关于matlab定义一个新函数的相关议题,使用内容导航快速到达. 内容导航: Q1:matlab怎么建立自定义函数 自定义函数的格式: function 函数名(参数) 函数表达式 end ...
- Python中函数的定义和参数传递
前言 什么是函数,为什么它又叫做函数? 一.函数的定义 以前在中学阶段我们就学习过函数,那时的函数的定义是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B ...
最新文章
- MyEclipse数据库连接配置(以Oracle为例)
- 多维DP UVA 11552 Fewest Flop
- java企业人事管理系统源码_企业人事管理系统完美版源代码 - 源码下载|行业应用软件|企业管理(财务/ERP/EIP等)|源代码 - 源码中国...
- fastdfs-配合nginx-麻烦的
- 自定义的ViewGroup中添加自定义View 造成的无法显示问题(个人)
- TCP文件上传Java_Java 理解TCP通信案例:文件上传案例
- ZigBee简介(不断补充)
- 简单游戏代码_简单游戏
- mysql怎么导入sql文件_如何将sql文件导入mysql
- 高等代数——大学高等代数课程创新教材(丘维声)——2.3笔记+习题
- Android图形图像处理,主流app开发工具
- cad2006激活未找到html文件,[转载]AutoCAD2006启动时提示“许可证系统出现问题”解决方法...
- css特效之水滴效果
- python实现kindle每天推送博客2----python实现爬取博客内容
- 15K服务器硬盘对齐分数,第七代15000RPM硬盘 希捷捷豹15K.7评测
- python opencv 常用增强 dct变换+侵蚀+扩张+索贝尔算子+直方图均衡化+光照平衡+
- 一般迭代法与steffensen迭代法matlab实现
- Python全国计算机等级考试(2021)
- 关于视频转码后只有声音没有画面的问题
- Base64编码和其隐写术
热门文章
- FANUC机器人的连续回转功能使用说明
- IOTE 2019第十一届国际物联网展--苏州站
- RAW(裸) 与 QCOW2(写时复制) 的区别
- 太阳直射点经纬度计算方法
- 为什么老板总觉得员工笨,员工天天骂老板?
- 2020计算机顶级大会_2020年数据科学的顶级编程语言
- 阿里大咖精心烹饪整理85道Java微服务面试题(附答案)
- andorid popwindow全屏显示时获取到的屏幕高度偏小
- linux系统管理之进程管理(连载)
- Docker启动失败,报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock.