JavaScript定义函数的几种方式 1
上节我们介绍了《JavaScript工作体系中不可或缺的函数》,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的特点和与其他方式的区别。
1、 函数式声明
function funName(arg1, arg2)
{
alert(arg1 + “,” + arg2);
}
特点:此种方式可定义命名的函数变量,而无需给变量赋值,这是一种独立的结构,不能嵌套在非功能模块中。函数名在自身作用域和父作用域内是可获取的(其他域是娶不到的)。当解析器读取js代码时,会先读取函数的声明,此种方式定义的函数在执行任何代码之前都可以访问(调用)。
2、 函数表达式(函数字面量)
var fun = function(arg1, arg2){
alert(arg1 + “,” + arg2);
}
var fun = function funName(arg1,arg2){
alert(arg1 + “,” + arg2);
}
(function hello(){
alert(“HelloWorld!!!”);
})(); // 自调用
特点:地中方式是将函数定义为表达式语句的一部分。函数可以是命名的也可以是匿名的。而且必须等到解析器执行到它所在的代码行才能真正被解释执行。
3、 函数构造法,参数必须加引号
var fun = new Function(‘arg1’, ‘arg2’, ‘alert(arg1 + “,” + arg2)’);
特点:从技术角度讲,这是一个函数表达式。但是一般不推荐这种方式。
4、 对象直接量
var obj = {
name : “”,getName : function(){return this.name;
},
setName : function(name){
this.name = name;
}
};
特点:将方法的定义看做为一个对象的成员变量,此时对象的变量值为一个方法,通过访问该对象的属性名称,达到调用方法的效果。
5、 原型继承
var obj = new Function();
obj.prototype = {
name : “”,getName : function(){return this.name;
},
setName : function(name){
this.name = name;
}
};
特点:定义了一个函数对象,在其原型对象中定义方法。在使用prototype的方法时,必须实例化该对象才能调用其方法。
6、 工厂模式
function obj(){
var temp = new Object();
temp.name = “”;
temp.getName = function(){
return this.name;
};
temp.setName(name){
this.name = name;
};
return temp;
}
特点:工厂模式是软件工程领域一种广为人知的设计模式,由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象。即在一个函数内创建一个对象,给对象赋予属性和方法再将其对象返回。
以上介绍的几种js中创建方法常用的方式,根据其特点和理解可以根据实际情况使用不同的方式声明函数。
from: https://segmentfault.com/a/1190000012200022
JavaScript定义函数的几种方式 1相关推荐
- JavaScript定义函数的几种方式
上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...
- 【MATLAB定义函数的几种方式】
MATLAB定义函数的几种方式 方法1:函数文件+函数名调用 比如我想要定义如下函数 f(x)=x2+1f(x)=x^2+1 f(x)=x2+1 可以现在脚本中写一个fun函数,并将其存储为函数同名文 ...
- JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式
JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...
- JavaScript定义类的几种方式
1.工厂方式 javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: <script type=&q ...
- Scala定义函数的5种方式
大数据spark的源码是用scala来开发的,因此学习scala来开发spark会更加便捷. Scala中第一函数的接种方式如下: 规范化写法,scala函数的返回值是最后一行代码 Unit是scal ...
- javascript定义数组的两种方式,获取各个元素的值
<script type="text/javascript"> //创建数组并赋值 //1声明数组,分配空间,赋值 ...
- JS定义函数的两种方式:函数声明和函数表达式
函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...
- Python的类中定义函数的三种方式及其利用
类中方法/函数: 普通方法 直接定义(含self) 类方法 @classmethod 静态方法 @staticmethod 类中变量: 静态变量 普通变量 定义在构造函数中(__init__) 看代码 ...
- Python定义函数的三种方式
1.空函数 当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能. def get_test1():pass 2.有参函数 在函数定义阶段括号内有参 ...
最新文章
- execute、executeQuery和executeUpdate之间的区别
- java并发编程同步器 Semaphore、CyclicBarrier、Exchanger、CountDownLatch
- LeetCode Generate Parentheses
- IOS开发笔记 - 基于SDWebImage的网络图片加载处理
- JVM 的 工作原理,层次结构 以及 GC工作原理
- MyBatis多对多关联查询示例——MyBatis学习笔记之十八
- 好文推荐 | 分布式锁用Redis好,还是Zookeeper好?
- camel 使用_使用Camel从WildFly 8向WebLogic 12发送JMS消息
- 【操作系统】大内核和微内核的比较
- 民用建筑工程给水排水设计深度图样_市政给水管道工程施工方案
- jquery基础使用!
- java uint16 t_uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍
- Tomcat Linux下自启动
- ansys命令流——布尔运算
- Zune支持哪些格式?
- 利用实体类接收中国电信物联网平台推送的数据
- 拉普拉斯变换和Z变换表
- 第二届全球区块链峰会随记
- 这个模型怎么划分网格?
- [HDU 5755] Gambler Bo (高斯消元)
热门文章
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎...
- 大型web系统数据缓存设计-l转载
- STOMP协议规范--转载
- eclipse 中文件引用报错不能编译,但引用文件确实存在
- 机器学习算法加强——贝叶斯网络
- Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
- 区块链3.0:侧链与跨链行业趋势报告|OK资本
- 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...
- 布道微服务_10注册中心与RPC框架的选型
- jvm性能调优 - 01类加载机制Review