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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM