JS中的函数概念和C语言的概念是类似的,JS中的函数与方法怎么区别?

7a7d9a0fe5ca15dc4e062a2a79a59888.png

梵蒂冈之花

你说的所谓函数是类的方法。a=[1,2,3]Array.isArray(a)#returntrueisArray是类Array的方法你说的所谓的方法就是类所生成对象的方法。a=[1,2,3]a.pop()#return3pop()是Array类所生成的对象a的方法这里所谓的类指的是构造函数之前写的关于函数的笔记,你可以作为个参考。Function在JavaScript中,函数是Function类的具体实例。而且都与其它引用类型一样具有属性和方法。函数名实际上是指向函数对象的指针,函数可以作为参数参与到传参和返回值中。函数定义//函数声明式定义functionfoo(num1,num2){returnnum1+num2;}//函数表达式定义varfoo=function(num1,num2){returnnum1+num2;};//使用Function构造函数定义varfoo=newFunction("num1","num2","returnnum1+num2");//实际上创建一个Function实例并不一定要赋值给具体的指针,可以直接执行(function(x,y){returnx+y})(1,2);//之所以用圆括号把function(){}括起来是因为js解释器会将function解释为函数声明,而函数声明不能直接跟着(x,y),我们需要将其转换为函数表达式。//(1,2)表示要传递跟函数的参数。//上面的例子也可以写成:functionfoo(x,y){returnx+y;}(1,2);//函数声明的方式无法定义匿名函数,因此如果想使用匿名函数,则必须用函数表达式的定义方式。函数的对象特性因为函数是Function的实例,而函数名仅仅是该实例的一个引用地址。因此可以作为参数和返回值参与到函数的传参过程中。functioncall_some_function(some_function,some_argument){returnsome_function(some_argument);}functionadd_10(num){returnnum+10;}console.log(call_some_function(add_10,20));//30函数的内部属性arguments|thisarguments对象中保存着传递给函数的参数arguments.length返回传入参数的个数Note:length属性表示函数定义时候默认接收的参数数量。arguments.length表示函数实际执行时接收的参数数量。functiontest_arguments(){if(arguments.length==2){console.log(arguments.length);console.log(arguments);}else{console.log(arguments.length);console.log(arguments);arguments.callee(4,5);};}(1,2,3)/**3{'0':1,'1':2,'2':3}2{'0':4,'1':5}**/arguments.callee()主要用在递归函数中调用函数自身的情境中。js和别的语言不同在于函数名只是一个指针,可以随时变化,函数中利用函数名来调用自身属于高耦合,可能会出现问题,而arguments.callee()调用自身就会规避掉这个问题functionfactorial(num){if(num

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值