打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
js中(function(){})()的写法用处

js中(function(){})()的写法用处

原创 Kevin_C_F 发布于2015-07-22 18:24:43 阅读数 12138
更新于2015-07-22 18:24:43
分类专栏: javascript
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

以前看到老师写js的单例模式时疑惑为什么要这么写

var singleton = (function () {    var privateVariable;    function privateFunction(x) {        ...privateVariable...    }    return {        firstMethod: function (a, b) {            ...privateVariable...        },        secondMethod: function (c) {            ...privateFunction()...} };}());

后来查了下资料,js中(function(){…})()立即执行函数写法理解,终于了解了。

来来来,首先嘛,JS中函数有两种命名方式

1、一种是声明式。

而声明式会导致函数提升,function会被解释器优先编译。即我们用声明式写函数,可以在任何区域声明,不会影响我们调用。

function XXX(){}

2、一种是函数表达式

函数表达式我们经常使用,而函数表达式中的function则不会出现函数提升。而是JS解释器逐行解释,到了这一句才会解释。因此如果调用在函数表达式之前,则会调用失败。

var k = function(){}
fn1();function fn1(){}//可以正常调用fn2();var fn2 = function(){}//无法调用

OK,下面进入正题,对函数表达式加上(),是可以直接调用的
但是如果是对声明式的后部加上()则是会被编译器忽略。

 var fn2 = function(){}();//对,就是这样function fn1(){}();//会被忽略

而平常的function(){}则是一种声明式,如果加上()括号后,则会被编译器认为是函数表达式,(加上+-号都可以),从而可以用()来直接调用

(function fn1(){})();
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入理解JavaScript函数及其模式(一)
函数的两种创建自定义方式
JS函数定义方法
JS 立即执行的函数表达式(function)写法
JS中 (function(){...})()立即执行函数
JavaScript(js)函数声明与函数表达式的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服