对象文字表示法中的方法记录到控制台,但也记录未定义的日志

时间:2018-08-15 22:17:04

标签: javascript methods console undefined object-literal

我已经使用对象文字表示法创建了一个对象,并且在其中有两种方法已登录到控制台以确保它们可以正常工作。每种方法都显示在控制台中。但是在记录每个方法之后,立即返回“ undefined”,我无法弄清原因。

我搜索了与对象文字表示法有关的问题,但没有发现与该特定问题有关的任何内容。

我什至经历了MDN来处理对象。有人告诉我这可能是一个简单的错误。有没有人有什么建议?

这是我正在使用的代码:

var car = {
    name: 'Magic',
    make: 'Nissan',
    model: 'Sentra',
    mileage: 79000,
    year: 2002,
    owned: true,
    start: function() {
        console.log('Car is turned on!');

    },
    off: function() {
        console.log('This car has not been turned on. Do you have the key?');
    }

};

console.log(car);
console.log(car.start());
console.log(car.off());

2 个答案:

答案 0 :(得分:1)

通过将car.start()传递到console.log,您正在记录car.start的返回值,该返回值隐式为undefined。要解决此问题,只需将代码更改为只调用对象上已登录到控制台的方法即可。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

答案 1 :(得分:1)

当您执行car.start()时,它将把您的字符串打印到控制台,而console.log()将返回undefined。当您将其包装在另一个console.log()调用中时,它将打印字符串和返回的值(例如undefined)。

您可以直接像这样直接调用方法:

console.log(car);
car.start();
car.off();