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。

  • 相关阅读:
    SQL Server AUTO_FIX_Login_Users
    SQL Server Always On 切换主机Login和User无法匹配解决方案
    SQL Server 目标主体名称不正确,无法生成 SSPI 上下文
    SQL Server Rebuild Index
    jqery和js如何判断checkbox是否选中 (转)
    jxl
    jxl 管理excel
    Bootstrap库之Modals
    jquery attr()
    js 验证数字(验证字符串是否是数字)
  • 原文地址:https://www.cnblogs.com/axu1997/p/11823883.html
Copyright © 2011-2022 走看看