zoukankan      html  css  js  c++  java
  • return console.log()结果为undefined现象的解答

    console.log总是出现undefined——麻烦的console

    //本文为作者自己思考后总结出的一些理论知识,若有错误,欢迎指出

    bug出现

    ​ 需求如下:新建一个car对象,调用其中的decoration功能,识别出该类是那一辆车,车的款式要求从"劳斯莱斯", "兰博基尼", "别克君威", "北京现代"中随机出现

    //定义一个car类
        function Car() {
            this.decoration = function () {
                var carlist = ["劳斯莱斯", "兰博基尼", "别克君威", "北京现代"]
                var r = Math.floor(Math.random() * carlist.length);
                return console.log(carlist[r]);
            }
    
        }
        var car = new Car();
        // 调用car中的decoration方法
        console.log("我是一辆" + car.decoration());
    

    但是与预期不同,控制台中输出的结果为,

    即car.decoration的值为undefined:

    解决方案:

    直接将this.decoration 的返回值设置为carlist[r]即可,代码如下

    //定义一个car类
        function Car() {
            this.decoration = function () {
                var carlist = ["劳斯莱斯", "兰博基尼", "别克君威", "北京现代"]
                var r = Math.floor(Math.random() * carlist.length);
                return carlist[r];
            }
    
        }
        var car = new Car();
        // 调用car中的decoration方法
        console.log("我是一辆" + car.decoration());
    

    这时候问题解决了,但是依旧需要知道问题出现的原因

    原因分析

    例一:

    如下,但return一个1+1时返回结果不会是一个 1+1 而是返回一个2

     function  plus(){
            return 1+1;
        }
        console.log(plus());
    

    也容易看出,函数的返回值是一个运行结果

    再来看一个例子

    例二:

    代码如下所示,此时控制台打印的结果为 undefined,也就是说,未指定return值的情况下,函数的执行结果为返回值为undefined

    
        function  plus(){
            1+1;
        }
        console.log(plus());
    
    
    

    例三

    再看看下面代码的输出结果:

    console.log(typeof(console.log ));
    

    其结果为function

    结论

    则当我们return 一个console.log()时,return的是一个方法的放回结果,且该方法没有指定返回值,就像例二一样

    所以在我们return 一个console.log()函数的时候得到则会是一个undefined。

  • 相关阅读:
    ThreadLocal的原理和使用场景
    sleep wait yield join方法的区别
    GC如何判断对象可以被回收
    双亲委派
    ConcurrentHashMap原理,jdk7和jdk8版本
    hashCode和equals
    接口和抽象类区别
    为什么局部内部类和匿名内部类只能访问局部final变量
    【GAN】基础GAN代码解析
    TF相关codna常用命令整理
  • 原文地址:https://www.cnblogs.com/axu1997/p/11823883.html
Copyright © 2011-2022 走看看