为什么从函数里面的console.log会出现undefined呢?

   <script>
        var a = function fn() {
            return console.log(123);
        };
        console.log(a());
    </script>

img


如图控制台正确输出123后,跟着一个undefined是为什么呢?


        var a =function(){
            return console.log(123);
        }
        console.log(a());


        //上面其实就是这样的过程

        var a = function(){
            let result = console.log(123); //控制台打印123后。并没有返回任何数据。所以result为undefined

            return result; 
        }
        /*
        这里打印其实就是函数返回的result。
        所以请先思考 console.log(123); 打印输出在控制台。但是它有返回什么状态数据吗?
        很显然它并没有返回任何数据。所以result的值为undefined

        所以a()执行后控制台打印了123.然后返回result(值为undefined) 然后console.log将其打印。
        所以控制台打印出undefined
        */

        console.log(a());

改成这样试一下,大概意思是console.log(123);是输出到控制台,对它进行return则无法进行返回值;

var a = function() {
  return 123;
};
console.log(a());

函数fn执行console.log(123) 会打印123,然后 return console.log(123) 的返回值,console.log() 就是一个函数 他的返回值是undefined 就相当于 return undefined

因为你已经return 了


<script>
        var a = function fn() {
            return console.log(123);
        };
        a();
    </script>