欢迎来到山村网

ECMAScript中函数function类型

2019-03-02 13:54:04浏览:717 来源:山村网   
核心摘要:  这篇文章主要介绍了ECMAScript中函数function类型的相关资料,需要的朋友可以参考下  说起来ECMAScript中上面最有意思,我

  这篇文章主要介绍了ECMAscript中函数function类型的相关资料,需要的朋友可以参考下

  说起来ECMAscript中上面最有意思,我想那莫过于函数了,有意思的根源,则在于函数实际上是对象。每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。函数通常是使用函数声明语法定义的,如下例子:

  代码如下:

  function sum(num1,num2)

  {

  return num1+num2;

  }

  这与下面使用函数表达式定义函数的方式几乎相差无几。

   代码如下:

  var sum=function(num1,num2)

  {

  return num1+num2;

  };

  以上代码定了变量sum并将其初始化为一个函数。你们会注意到,function关键字后面没有函数名。这是因为在使用函数表达式定义函数时,没有必要使用函数名(通过变量sum既可以引用函数)。另外,还要注意函数末尾有一个分号,就像声明其他变量时一样。

  最后一种定义函数的方式是使用Function构造函数。Function构造函数可以接受任意数量的参数,但最后一个参数始终都会被看成函数体,而前面的参数则枚举出了新函数的参数。如下例子:

  复制代码 代码如下:

  var sum=new Function("num1","num2","return num1+num2");//不推荐

  从技术角度讲,这是一个函数表达式。但是,我们不推荐使用这种方法定义函数, 因为这种语法会导致解析两次代码(第一次解析常规的ECMAscript代码,第二次是解析传入构造函数中的字符串),从而影响性能。不过,这种语法对于理解“函数是对象,函数名是指针”的概念都是非常直观的。

  由于函数名仅仅是指向函数的指针,因此函数名与包含对象指针的其他变量没有什么不同。换句话说,一个函数可能会有多个名字,如下例子:

  代码如下:

  function sum(num1,num2)

  {

  return num1+num2;

  }

  alert(sum(10,10));//20

  var anotherSum=sum;

  alert(anotherSum(10,10));//20

  sum=null;

  alert(anotherSum(10,10));//20

  以上代码首先定义了一个名为sum()的函数,用于求两个值的和。然后,有声明了变量anotherSum,并将其设置为sum()相等(将sum的值赋给anotherSum)。注意,使用不带圆括号的函数名是访问函数指针,而非调用函数。此时,anotherSum和sum 就指向了同一个函数,因此anotherSum()也可以被调用并返回结果。即使将sum设置为null,让它与函数“断绝关系”,但仍然可以证明正常调用anotherSum()。

  以上所述就是本文的全部内容了,希望能够对大家学习javascript有所帮助。

(责任编辑:豆豆)
下一篇:

从底层简析Python程序的执行过程

上一篇:

总结的几个Python函数方法设计原则

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com