javaScript中函数调用的疑问,末尾多了一个()
天蓬老师
天蓬老师 2017-04-11 11:58:07
[JavaScript讨论组]
    var Singleton=function(){
       var privateVariable=10;
       function privateFunction(){
             return false;
       }
       return {
             publicProperty:true,
             publicMethod:function(){
                  privateVariable++;
                  return privateFunction();
             }
       }
    }();

这段代码中,末尾出现了();如果没有这个(),那么我可以这么调用:
//调用函数
var s=Singleton();

疑问:现在末端多加了个()如何理解呢??高程上只是说了,函数表达式的后面可以跟圆括号。
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
大家讲道理
  1. 函数名只是个变量而已,实际上你可以把函数看成是一种“数据类型”。那么函数就存在“函数字面量”这一说法

  2. 函数的执行是函数末尾跟括号的方式

  3. 函数名后面跟括号可以执行,那为何不直接字面量后面跟个括号,反正都是函数后面跟个括号,一样满足函数执行的语法

PHPz

立即执行函数,

Singleton = {
             publicProperty:true,
             publicMethod:function(){
                  privateVariable++;
                  return privateFunction();
             }
       }

这是闭包的用法

高洛峰

函数调用的结果是返回值,中间的计算什么的只能算是过程。
那么初始加了圆括号的函数,执行结果就是:

return {
             publicProperty:true,
             publicMethod:function(){
                  privateVariable++;
                  return privateFunction();
             }

那么也就是相当于

var Singleton = {
             publicProperty:true,
             publicMethod:function(){
                  privateVariable++;
                  return privateFunction();
             }
PHP中文网

首先得感谢各位,其实我最想问咋调这个函数呢,看了大家的留言后,就比划了一下:(看末尾的函数调用,居然可以了)

var Singleton=function(){
       var privateVariable=10;
       function privateFunction(){
             return false;
       }
       // alert(9);
       return {
             publicProperty:true,
             publicMethod:function(){
                  privateVariable++;
                  alert(privateFunction());
             }
       }
    }().publicMethod();
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号