javascript函数表达式怎么用=

  介绍

小编给大家分享一下javascript函数表达式怎么用=,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

函数表达式是javascript中的一个既强大又容易令人困惑的特性。

定义函数的方式有两种:一种是函数声明,另外一种就是函数表达式。

函数声明的语法是这样的。

function  functionName (arg0, __arg1、,最长),{   ,,,//函数体   }

语法:首先是函数关键字,然后是函数的名字,这就是指定函数名的方式。

Firefox、Safari, Chrome和Opera都给函数定义了一个非标准的名字属性,通过这个属性可以访问到给函数指定的名字。
这个属性的值永远等于跟在函数关键字后面的标识符。

//只在Firefox、Safari, Chrome和歌剧有效   function  functionName (arg0, __arg1、,最长),{   }   console.log (functionName.name);,//,“functionName"

<强>关于函数声明,它的一个重要特征就是函数声明提升(函数声明提升),意思是在执行代码之前会先读取函数声明。这就意味着可以把函数声明放在调用它的语句后面。

sayName ();,//,“Shaw"   function  sayName () {   ,,,console.log (“Shaw");   }

<强>这个例子不会抛出错误,因为在代码执行之前会先读取函数声明

第二种创建函数的方式是使用函数表达式。

函数表达式有几种不同的语法形式。
下面是最常见的一种形式。

var  functionName =,,函数(arg0, __arg1、,最长),{   ,,//functionBody   };

这种形式看起来好像是常规的变量赋值语句,即创建一个函数并将它赋值给变量functionName。

这种情况下创建的函数叫做<强>匿名函数(匿名函数)强劲,因为函数关键字后面没有标识符。
匿名函数也叫拉姆达函数。匿名函数的名字属性是空字符窜。

函数表达式与其他表达式一样,在使用前必须先赋值。

sayHi ();,//, error :, sayHi  is  not  a 函数   var  sayHi =,函数(){   ,,,console.log (“Hi");   }//,var  sayHi //此时sayHi是未定义的//,sayHi (),//, error :, sayHi  is  not  a 函数=//,sayHi 函数(),{,console.log (“Hi");}

理解函数提升的关键,就是理解函数声明与函数表达式之间的区别。

能够创建函数再赋值给变量,也就能够把函数作为其他函数的值返回。

function  createComparisonFunction (propertyName), {   ,,,return 函数(中的object1, object2), {   ,,,,,,,var  value1 =,中的object1 [propertyName);   ,,,,,,,var  value2 =, object2 [propertyName);   ,,,,,,,如果(value1  & lt;, value2), {   ,,,,,,,,,,,return  1   ,,,,,,,}else 如果(value1 祝辞,value2), {   ,,,,,,,,,,,return  1;   ,,,,,,,},{else    ,,,,,,,,,,,return  0;   ,,,,,,,}   ,,,}   }

createComparisonFunction()返回了一个匿名函数。
返回的函数可能会被赋值给一个变量,或者以其他方式被调用。
不过,在createComparisonFunction()函数内部,它是匿名的。
在把函数当成值使用的情况下,都可以使用匿名函数。
不过,这并不是匿名函数唯一的用途。

递归

递归函数就是一个函数通过函数名调用自身的情况下构成的。

function 阶乘(num), {   ,,,如果(num  & lt;=, 1), {   ,,,,,,,return  1;   ,,,},{else    ,,,,,,,return  num  *,阶乘(num-1);   ,,,}   }   阶乘(4),,//,4 * 3 * 2 * 1,=,24//4 *,阶乘(3),=祝辞,4 * 3 * !(2),=祝辞,4 * 3 * 2 * !(1),=祝辞,4 * 3 * 2 * 1,=祝辞,24

这是一个经典的递归阶乘函数。虽然这个函数表面看来没什么问题,但下面的代码却可能导致它出错。

function 阶乘(num), {   ,,,如果(num  & lt;=, 1), {   ,,,,,,,return  1;   ,,,},{else    ,,,,,,,return  num  *,阶乘(num-1);   ,,,}   }   var  anotherFactorial =, !;   时间=factorial 零;//注意这里,其实函数的阶乘指向一个空对象。   console.log (anotherFactorial(4));,,//错误:,anotherFactorial  is  not  a 函数

以上代码先把阶乘()函数保存在变量anotherFactorial中,然后将阶乘变量设置为空,结果指向原始函数的引用只剩下一个。

javascript函数表达式怎么用=