js误区:方法变成字符串了??

一次在工作中遇到的问题,当时陷入了死胡同,许久以后才弄明白这个问题。不是方法变成字符串了,是没有正确的引用方法

一、大家可以先猜测下下面两种情况的结果。

<script>
    function example () {
        return 1;
    }
    // 情形一:
    alert(example);
    // 情形二:
    alert(example());
</script>

二、经过测试,你得到的结果应该是下面这样子的:

情形一:会将方法作为一个整体的字符串弹出

    function example () {
        return 1;
    }
 

情形二:会弹出方法的返回值,这里是 : 1

    1

三、原因分析:

        情形一中直接弹出的是 example ,可以简单的把它看成是一个变量,这个变量指向方法的本身,而不是方法执行后的结果。

        情形二中直接弹出的是 example() ,这是调用方法,结果返回的自然是方法的结果。

四、结论:

        如果你需要返回方法的结果而不是方法本身,记得查看下你引用时是不是引用的方法变量(example)而不是直接调用方法(example())。