为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript的()()原理是什么

JavaScript的()()原理是什么

浮云间 2019-04-21 20:40:20
比如(function(){console.log(1);})()这里把function包起来的()的用处和原理,和最后的()运行上一个函数,他的原理是什么,为什么会运行上一个函数表达式。还有+function(){console.log(2);//同时返回NaN}()-function(){console.log(3);//同时返回NaN}()!function(){console.log(4);//返回true}()为什么会返回NaN和true?为什么只有+-!可以运行,其他的却不行,会报错?有没有其他办法来运行匿名函数,不用下面的方式,也就是在最后不使用()(function{...}())()+function(){...}()-function(){...}()来运行匿名函数的方法
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

其实能这样写的原因,是因为javascript的function是第一类对象,即function可以赋值给变量
functiondemo(){
console.log('demo');
}
demo();//demo
我们只是在这个变量的后面加上对括号,为什么能执行这个函数呢?因为这个demo指向了一个函数,所以我们是间接的执行了函数
了解了上面的一点后,我们知道javascript是面向对象的变成语言,但是它也可以实现部分的函数式编程特性。
举个例子,有两个函数,分别是让两个数相加和求一个数的平方
functionadd(a,b){
returna+b;
}
functionsquare(x){
returnx*x;
}
那么我们调用的时候,是这样调用的
square(add(2,3));
但是呢,这样看着挺不清爽的,利用js的函数式编程特性,我们可以这么写
functionaddToSquare(a,b){
varx=a+b;
returnfunction(){
returnx*x;
}
}
addToSquare(2,3)();//25
后面的小括号同样是执行,执行前面的函数返回的一个函数,体现了函数的传递性~函数式编程。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 283 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信