上节我们介绍了《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相关推荐

  1. JavaScript定义函数的几种方式

    上节我们介绍了<JavaScript工作体系中不可或缺的函数>,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.接下来我们说说js当中定义(声明)函数的几种方式,以及每种方式的 ...

  2. 【MATLAB定义函数的几种方式】

    MATLAB定义函数的几种方式 方法1:函数文件+函数名调用 比如我想要定义如下函数 f(x)=x2+1f(x)=x^2+1 f(x)=x2+1 可以现在脚本中写一个fun函数,并将其存储为函数同名文 ...

  3. JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式

    JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...

  4. JavaScript定义类的几种方式

    1.工厂方式 javaScript中创建自己的类和对象,我们应该是必须掌握的,我们都知道javaScript中对象的属性可以在对象创建后动态定义,比如下面的代码: <script type=&q ...

  5. Scala定义函数的5种方式

    大数据spark的源码是用scala来开发的,因此学习scala来开发spark会更加便捷. Scala中第一函数的接种方式如下: 规范化写法,scala函数的返回值是最后一行代码 Unit是scal ...

  6. javascript定义数组的两种方式,获取各个元素的值

    <script type="text/javascript">             //创建数组并赋值             //1声明数组,分配空间,赋值    ...

  7. JS定义函数的两种方式:函数声明和函数表达式

    函数声明 关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它 ...

  8. Python的类中定义函数的三种方式及其利用

    类中方法/函数: 普通方法 直接定义(含self) 类方法 @classmethod 静态方法 @staticmethod 类中变量: 静态变量 普通变量 定义在构造函数中(__init__) 看代码 ...

  9. Python定义函数的三种方式

    1.空函数 当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能. def get_test1():pass 2.有参函数 ​ 在函数定义阶段括号内有参 ...

最新文章

  1. execute、executeQuery和executeUpdate之间的区别
  2. java并发编程同步器 Semaphore、CyclicBarrier、Exchanger、CountDownLatch
  3. LeetCode Generate Parentheses
  4. IOS开发笔记 - 基于SDWebImage的网络图片加载处理
  5. JVM 的 工作原理,层次结构 以及 GC工作原理
  6. MyBatis多对多关联查询示例——MyBatis学习笔记之十八
  7. 好文推荐 | 分布式锁用Redis好,还是Zookeeper好?
  8. camel 使用_使用Camel从WildFly 8向WebLogic 12发送JMS消息
  9. 【操作系统】大内核和微内核的比较
  10. 民用建筑工程给水排水设计深度图样_市政给水管道工程施工方案
  11. jquery基础使用!
  12. java uint16 t_uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍
  13. Tomcat Linux下自启动
  14. ansys命令流——布尔运算
  15. Zune支持哪些格式?
  16. 利用实体类接收中国电信物联网平台推送的数据
  17. 拉普拉斯变换和Z变换表
  18. 第二届全球区块链峰会随记
  19. 这个模型怎么划分网格?
  20. [HDU 5755] Gambler Bo (高斯消元)

热门文章

  1. 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎...
  2. 大型web系统数据缓存设计-l转载
  3. STOMP协议规范--转载
  4. eclipse 中文件引用报错不能编译,但引用文件确实存在
  5. 机器学习算法加强——贝叶斯网络
  6. Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
  7. 区块链3.0:侧链与跨链行业趋势报告|OK资本
  8. 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...
  9. 布道微服务_10注册中心与RPC框架的选型
  10. jvm性能调优 - 01类加载机制Review