首页 新闻 会员 周边 捐助

JS return function(){}

0
悬赏园豆:5 [已解决问题] 解决于 2014-08-20 15:53
  function a() {
            return function () {
               
            };
   }
alert(a()
== undefined); // false

请问这个  alert(a()==?)   可以返回 true?

CTRA王大大的主页 CTRA王大大 | 初学一级 | 园豆:30
提问于:2014-08-20 14:37
< >
分享
最佳答案
0

不可以。明显函数a返回了一个函数,自然不可能是undefined了。

你看的这个应该是示例代码吧?只是告诉你没返回undefined而已,或者是作者疏忽了,或者是作者告诉你不要被返回函数未返回结果所忽悠。

 

代码修改为 alert(a()()==undefined),这个时候就是了。

 

此外,要想返回true,还可以 是 alert(typeof a() == 'function')。

收获园豆:4
519740105 | 大侠五级 |园豆:5810 | 2014-08-20 15:00

代码我没写全

 function a() {
            return function b() {
                return this;
            };
        }
  alert(a()()==window);

现在差不多都明白了,不管怎么嵌套,嵌套部分只会返回函数,最终的this还是 window

CTRA王大大 | 园豆:30 (初学一级) | 2014-08-20 15:53
其他回答(2)
0

alert(a() instanceof Function);

收获园豆:1
乐享程序员 | 园豆:930 (小虾三级) | 2014-08-20 14:51
0

a(),返回一个function,然后直接输出function的名字的话,是会打印出函数体的。所以要==成立,可以在后面跟一个和函数体一样的字符串。

幻天芒 | 园豆:37205 (高人七级) | 2014-08-20 14:51
 function a() {

            return function b() {

            };
        }
   alert(a() == "b");

完全不对

支持(0) 反对(0) CTRA王大大 | 园豆:30 (初学一级) | 2014-08-20 15:48

@凡图: 如果你觉得b就是函数体的话,我无话可说。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2014-08-20 17:32

@凡图: 你完全可以试试如下语句:

function a() {
    return function b() {};
}
alert(a() == "function b() {}");
支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2014-08-20 17:33

@幻天芒: 你这个回答真是醉了。这个肯定返回true。

支持(0) 反对(0) a_boy_who_likes_dogs | 园豆:200 (初学一级) | 2016-07-26 21:42

@a_boy_who_likes_dogs: 题主问了,如何才能返回true。这代码刚好就是这效果。另外,虽然结果是返回true,那这不重要,重要的是能否理解为什么返回true。那如果是如下语句呢:

function a() {
    return function b() {};
}
alert(a() == "function b(){}");
支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2016-07-26 23:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册