zoukankan      html  css  js  c++  java
  • 《JavaScript Ninja》之挥舞函数

    挥舞函数

    匿名函数为什么如此重要

    通常使用匿名函数的情况是,创建一个供以后使用的函数。例如,将匿名函数保存在一个变量里,将其作为一个对象的方法,或者是将匿名函数作为一个回调。——>在这些情况下,该函数并不需要名称进行引用。

    JavaScript 的强大威力依赖于是否将其作为函数式语言进行使用。函数式变成专注于:少、无副作用,将函数作为程序代码的构件块。

    函数调用时的引用形式,包括递归

    • 通过名称进行引用;

    • 作为一个方法进行引用(通过对象的属性名称);

    • 通过内联名称进行引用;

    • 通过 argumentscallee 属性进行引用。

    内联函数:

    可以给内联函数命名,但这些名称只能在自身函数内部才是可见的。和变量名称有点像,它的作用域仅限于声明它们的函数。

    函数引用的存储

    函数可以拥有属性,并且这些属性可以用来保持任何我们想使用的信息,包括以下几类:

    • 在函数属性中保存其他函数,以便稍后进行引用或调用;

    • 使用函数属性创建缓存(记忆)。

    利用函数的属性特性,给函数添加一个附加属性从而实现函数的存储。

    函数上下文的利用

    函数调用时,通过控制传递函数上下文,我们在当前对象上执行该对象没有的方法。利用这种技术,可以利用像 Array 和 Math 上已有的方法,在自定义数据上进行操作。

    处理可变长度的参数列表

    基于所传递参数的不同(函数重载),函数可以执行不同的操作。

    由于 JavaScript 没有函数重载,参数列表的灵活性是获得其他语言类型重载功能的关键所在。

    通过检查 arguments 列表,我们可以根据其传入参数的个数或类型,决定我们要做的事情。

    函数的 length 属性:声明了多少命名参数;

    argumentslength 属性:在调用时传入了多少参数。

    判断一个对象是否是函数

    通过在对象上调用 typeof 操作符,判断其结果是不是 function,可以判断该对象是不是函数的一个实例。但这种方式也有跨浏览器问题。

    Scoop It and Enjoy the Ride!
  • 相关阅读:
    kettle imestamp : Unable to get timestamp from resultset at index 22
    ImportError: No module named setuptools 解决方案
    Tesseract-OCR
    python截图
    connect to SQL Server in python on centos
    vertica merge 优化
    kettle crontab java: command not found
    Idea 使用maven+tomcat的时候,编译指定的Profile
    Java中Vector和ArrayList的区别
    Docker入门命令
  • 原文地址:https://www.cnblogs.com/Ruth92/p/5468827.html
Copyright © 2011-2022 走看看