• 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。

  • 相关阅读:
    ASP.NET存储过程自定义分页详解
    ajax php POST 提交例子
    一个用存储过程的基本分页及其调用
    DataGrid 存储过程的分页
    无刷新无限级菜单联动
    asp.net URL多参数傳值以及特殊符号传值问题
    ASP.NET页面间参数的传递
    Android动画开发——Animation动画效果
    android surface
    Android控件属性——android:cacheColorHint=“#00000000”
  • 原文地址:https://www.cnblogs.com/axu1997/p/11823883.html
Copyright © 2020-2023  润新知