目录
最有意思的函数" >最有意思的函数
拥有多个函数名的函数" >拥有多个函数名的函数
函数没有重载" >函数没有重载
函数声明与函数表达式的区别" >函数声明与函数表达式的区别
作为值的函数" >作为值的函数
函数的属性" >函数的属性
函数的方法" >函数的方法
首页 web前端 js教程 js中Function 类型有哪些

js中Function 类型有哪些

Oct 20, 2017 am 11:04 AM

最有意思的函数

  有意思的根源在于- 函数也是对象,同样有拥有属性和方法。 
  由于函数是是对象,那么函数名也就相当于指向函数对象的指针
 通常函数是由"函数声明"创建:
登录后复制
1 function(sum1,sum2){
2   reutnr sum1 + sum2;  
3 }
登录后复制
  也可以使用"函数表达式"创建:
登录后复制
1  var sum = function(sum1,sum2){
2    return sum1+sum2;
3 };
登录后复制
  还有一种方式使用"构造函数"创建: (但不推荐)
登录后复制
<span style="font-family: "Microsoft YaHei"; font-size: 16px">  //这种方式,会导致两次解析代码,第一次解析常规的代码,第二次解析传入构造函数中的字符串。</span><br/><span style="font-family: "Microsoft YaHei"; font-size: 16px">1 <span style="color: #0000ff">var</span> sum = <span style="color: #0000ff">new</span> Function("sum1","sum2","return sum1+sum2")</span>
登录后复制
  "函数声明"与"函数表达式"的区别在于:
登录后复制
  1. 函数表达式没有函数名

  2. 函数表达式需要分号结尾

拥有多个函数名的函数

  上面提到,函数是对象,而函数名仅仅是执行函数对象的指针。
  这代表着,通过将函数名赋值给其他变量,其他变量则也可以通过自身调用该函数。  注意: 访问函数对象指针时,则需要带小括号,如上面函数访问 sum 函数的指针
           则需要将 sum 赋值给一个变量,该变量便可拥有指向同等函数的指针。    
登录后复制
eg: var sum1 = sum; // sum(); sum1(); 执行的结果相同
登录后复制
强调: 使用 "函数名+()",代表着调用该函数, 不添加 "()",则代表访问该"指向该函数对象的指针"
        将函数名设置为 null ,则可以使其指向的函数断绝联系。
登录后复制
eg: sum = null; // sum(); 则会报错,提示sum不是一个函数, null代表着空对象指针
登录后复制

函数没有重载

  相同的函数名,后者会替换前者(函数声明或者函数表达式都是如此,这里以函数声明为例子)
登录后复制
eg: function sum(sum1){ return sum1+ 100 }    
function sum(sum2){ return sum2+ 200 }
    sum(100);   // 300;
登录后复制

函数声明与函数表达式的区别

  js解析器在对于这两者是由区别的。
  函数声明的函数,在开始执行代码之前,就会通过函数声明提升的过程,读取并将函数声明添加到执行环境中。
  即使函数在调用函数后面,也不会影响函数求值。
  而函数表达式则不会,解析器必须执行到当前代码块才会被初始化并执行。如果调用在前,则
登录后复制

作为值的函数

  在JS中,函数名本身就是变量。所以函数也可以作为值来使用。
  也就是说,不仅仅可以作为一个函数的参数,也可以作为一个函数的返回值。
  而sort() 方法只能根据 tostring() 的值来排序
登录后复制
eg: var data = [{name:&#39;A&#39;,age:2},{name:&#39;B&#39;,age:1}]
  // 创建指定属性的函数
   function setAttr(name){
        return function(o1,o2){
            var v1 = o1[name];
            var v2 = o2[name];
        
            if(v1 < v2) { return -1;
          }
            else if(v1 > v2) { return 1;  }
            else             { return 0;  }
        }
    }
    //使用sort()方法调用
    data.sort(setAttr(&#39;age&#39;));   // [{name,:&#39;B&#39;,age:&#39;1&#39;},{name:&#39;A&#39;,age:&#39;2&#39;}]
    data.sort(setAttr(&#39;name&#39;));  //  [{name:&#39;A&#39;,age:&#39;2&#39;},{name,:&#39;B&#39;,age:&#39;1&#39;}]
登录后复制

函数的属性

  每个函数都包含两个属性: length, prototype;  length : 表示函数接收的参数个数。
登录后复制
1 eg: funciont sum(test){}   //sum.lenght  == 1;
登录后复制
<span style="font-family: "Microsoft YaHei"; font-size: 16px"><span style="background-color: #ffffff"><strong>   prototype:  </strong></span>在JS中,该属性是保存所有实例方法的真正所在。
  在创建自定义引用类型以及实现继承时,该属性是非常重要的。<strong><span style="background-color: #ffffff">   prototype: </span></strong>属性是不可枚举的,因此不能使用for in发现。<br/>  通过构造函数的 <strong><span style="background-color: #ffffff">prototype </span></strong>属性,创建的方法或者属性,都会被它的实例对象所继承,从而实现继承机制。<br/></span>
登录后复制

函数的方法

  每个函数都包含两个非继承而来的方法: apply() 与 call();
  两者区别在于,第二个参数的不同。
  该方法强大在于,可以扩充函数赖于运行的作用域。  apply(): 第一参数是在其中运行函数的作用域,另一个是参数数组。  call()   : 第一参数是在其中运行函数的作用域,其他参数直接传递给函数,
              也就是除第一个参数,其他都是逐个列举出来。
 使用场景: 两者结果没有任何区别,而具体使用哪个,则取决于你传入的参数使用哪个方法方便。
                如果传入参数是一个数组则使用 apply 更合适一点,否则 call() 更合适一点。
登录后复制

以上是js中Function 类型有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤 Dec 17, 2023 pm 06:55 PM

股票分析必备工具:学习PHP和JS绘制蜡烛图的步骤,需要具体代码示例随着互联网和科技的快速发展,股票交易已经成为许多投资者的重要途径之一。而股票分析是投资者决策的重要一环,其中蜡烛图被广泛应用于技术分析中。学习如何使用PHP和JS绘制蜡烛图将为投资者提供更多直观的信息,帮助他们更好地做出决策。蜡烛图是一种以蜡烛形状来展示股票价格的技术图表。它展示了股票价格的

推荐:优秀JS开源人脸检测识别项目 推荐:优秀JS开源人脸检测识别项目 Apr 03, 2024 am 11:55 AM

人脸检测识别技术已经是一个比较成熟且应用广泛的技术。而目前最为广泛的互联网应用语言非JS莫属,在Web前端实现人脸检测识别相比后端的人脸识别有优势也有弱势。优势包括减少网络交互、实时识别,大大缩短了用户等待时间,提高了用户体验;弱势是:受到模型大小限制,其中准确率也有限。如何在web端使用js实现人脸检测呢?为了实现Web端人脸识别,需要熟悉相关的编程语言和技术,如JavaScript、HTML、CSS、WebRTC等。同时还需要掌握相关的计算机视觉和人工智能技术。值得注意的是,由于Web端的计

如何使用PHP和JS创建股票蜡烛图 如何使用PHP和JS创建股票蜡烛图 Dec 17, 2023 am 08:08 AM

如何使用PHP和JS创建股票蜡烛图股票蜡烛图是股票市场中常见的一种技术分析图形,通过绘制股票的开盘价、收盘价、最高价和最低价等数据,帮助投资者更直观地了解股票的价格波动情况。本文将教你如何使用PHP和JS创建股票蜡烛图,并附上具体的代码示例。一、准备工作在开始之前,我们需要准备以下环境:1.一台运行PHP的服务器2.一个支持HTML5和Canvas的浏览器3

PHP与JS开发技巧:掌握绘制股票蜡烛图的方法 PHP与JS开发技巧:掌握绘制股票蜡烛图的方法 Dec 18, 2023 pm 03:39 PM

随着互联网金融的迅速发展,股票投资已经成为了越来越多人的选择。而在股票交易中,蜡烛图是一种常用的技术分析方法,它能够显示股票价格的变化趋势,帮助投资者做出更加精准的决策。本文将通过介绍PHP和JS的开发技巧,带领读者了解如何绘制股票蜡烛图,并提供具体的代码示例。一、了解股票蜡烛图在介绍如何绘制股票蜡烛图之前,我们首先需要了解一下什么是蜡烛图。蜡烛图是由日本人

视频矩阵账号怎么做?它的矩阵账号都有哪些类型呢? 视频矩阵账号怎么做?它的矩阵账号都有哪些类型呢? Mar 21, 2024 pm 04:57 PM

随着短视频平台的盛行,视频矩阵账号营销已成为一种新兴营销方式。通过在不同平台上创建和管理多个账号,企业和个人能够实现品牌推广、粉丝增长和产品销售等目标。本文将为您探讨如何有效运用视频矩阵账号,并介绍不同类型的视频矩阵账号。一、视频矩阵账号怎么做?要想做好视频矩阵账号,需要遵循以下几个步骤:首先要明确你的视频矩阵账号的目标是什么,是为了品牌传播、粉丝增长还是产品销售。明确目标有助于制定相应的策略。2.选择平台:根据你的目标受众,选择合适的短视频平台。目前主流的短视频平台有抖音、快手、火山小视频等。

js和vue的关系 js和vue的关系 Mar 11, 2024 pm 05:21 PM

js和vue的关系:1、JS作为Web开发基石;2、Vue.js作为前端框架的崛起;3、JS与Vue的互补关系;4、JS与Vue的实践应用。

Golang 函数返回值的类型是什么? Golang 函数返回值的类型是什么? Apr 13, 2024 pm 05:42 PM

Go函数可以返回多个不同类型的值,返回值类型在函数签名中指定,并通过return语句返回。例如,函数可以返回一个整数和一个字符串:funcgetDetails()(int,string)。实战中,一个计算圆面积的函数可以返回面积和一个可选错误:funccircleArea(radiusfloat64)(float64,error)。注意事项:如果函数签名未指定类型,则返回空值;建议使用显式类型声明的return语句以提高可读性。

MySQL.proc表的作用和功能详解 MySQL.proc表的作用和功能详解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的作用和功能详解MySQL是一种流行的关系型数据库管理系统,开发者在使用MySQL时常常会涉及到存储过程(StoredProcedure)的创建和管理。而MySQL.proc表则是一个非常重要的系统表,它存储了数据库中所有的存储过程的相关信息,包括存储过程的名称、定义、参数等。在本文中,我们将详细解释MySQL.proc表的作用和功能

See all articles