js中动态函数的一些用法尝试

   在js中,经常会使用到函数,普通函数虽然很方便,但是,形式略显复杂,特别是代码量大的时候,这时,我们可以使用动态函数,动态函数形式比较简洁,并且比普通函数表达式更灵活,其结构如下:

var fun_name=new Function(x1,x2,x3,...,fun_body)

    这里需要注意的是,....表示的是省略,可以作为伪代码来看,并且,Function不能写成function,不然会报错,我们可以对比一下:

var fun1 = new Function("num1","num2","return num1+num2");
console.log(fun1(12,2))

运行结果:14

结果正确,我们换成function:

var fun1 = new function("num1","num2","return num1+num2");
console.log(fun1(12,2))

运行结果:

Uncaught SyntaxError: Unexpected string

   果然报错了,这里就需要了解到function 和Function的区别,这篇博客(https://blog.csdn.net/kinseygeek/article/details/68280828)详细地查了英文文档,给了我们解答。function是用于声明函数时用的,而Function是 constructor,里面需要传的是string,刚才的尝试中,显然我们并不是声明函数。而且我们传入的参数必须以字符串的形式进行,我们尝试一下:

var fun1 = new Function(num1,num2,return num1+num2);
console.log(fun1(12,2))

    运行结果:

Uncaught SyntaxError: Unexpected token return

    因此我们在使用Function的时候,必须传入string的形式。

    关于动态函数中的fun_body,到底什么形式的才算fun_body呢?此表达式只要参与运算就行吗?答案当然不是,因为函数必须要有返回值,没有返回值的运算是没有作用的,我们可以看下:

var fun1 = new Function("num1","num2","num1+num2");
console.log(fun1(12,2))

我们的fun_body里使用了运算符“+”,实际上并没有什么卵用,得不到结果,会出现:

undefined

    我大胆地进行猜测,这是因为没有识别到fun_body吗。我们尝试一下:

var fun1 = new Function("num1","num2","num1+num2");

运行结果为空白,没有报错。

   说明我们的猜测是对的。这问题等价于“num1+num2"也作为参数了,没有fun_body。说明fun_body是可以省略但是这样做没有实际价值。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值