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。

return console.log()结果为undefined现象的解答的更多相关文章

  1. JS里try...catch...finally详解,以及console日志调试(console.log、console.info等)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  2. [AST Babel Plugin] Transform code, add line:column number for console log

    For example we have current code: function add(a, b) { console.log(a, b) return a + b } function sub ...

  3. console.log(a)和console.log(window.a)的区别?

    console.log(window.l); //undefined console.log(l); //Uncaught ReferenceError: l is not defined js对于未 ...

  4. console.log的返回值undefined

    console.log(fun());  function fun(){ console.log(1); } //////输出结果为: 1 undefined console.log(fun());  ...

  5. console.log((function f(n){return ((n > 1) ? n * f(n-1) : n)})(5))调用解析

    console.log((function f(n){) ? n * f(n-) : n)})()); 5被传入到函数,函数内部三元计算,5 > 1成立,运算结果是5*f(4),二次运算,5*4 ...

  6. 从window.console&&console.log(123)浅谈JS的且运算逻辑(&&)

    一.JS的且运算记得最开始看到window.console&&console.log(123),当时知道能起什么作用但是没有深入研究,最近在研究后总算弄明白了.要理解这个,首先得明白三 ...

  7. 前端不为人知的一面--前端冷知识集锦 前端已经被玩儿坏了!像console.log()可以向控制台输出图片

    前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

  8. JS之console.log详解以及兄弟姐们邻居方法扩展

    console.log() 基本用法 console.log,前端常用它来调试分析代码,你可以在任何的js代码中调用console.log(),然后你就可以在浏览器控制台看到你刚才打印的常量,变量,数 ...

  9. {}+[]与console.log({}+[])结果不同?从JavaScript的大括号谈起

    看到这样一个问题:为什么直接在控制台运行{} + []和用console.log({} + [])输出,两者结果不一样? 于是乎打开chrome的控制台运行了一下: 为什么结果会这样呢?不得已学习一下 ...

随机推荐

  1. C语言程序设计100例之(31):全排列问题

    例31   全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 n(1≤n≤9) 输出格式 由1-n组成的所有不重复的数字 ...

  2. Java技术-3-Java程序基本结构

    下面是一个完整的Java程序, /** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { ...

  3. koa进阶史(二)

    之前想着放弃CAS的验证吧,但是又去请教了一个大牛,了解到sf公司的CAS验证校验的参数不是sessionId而是另外两个,后登陆sit环境偷了两个参数后,后台接口成功返回200.然后node层也就能 ...

  4. ZipArchive(解压文件)

    一.首先介绍minizip 的使用方法 ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单方法:从http://code. ...

  5. 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)

    注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一). 前面搭建好了自己本地的S ...

  6. JavaFX之FXML+CSS创建窗体以及透明窗体添加阴影

    前言 开通博客园有一段日子了,一直没空也没想好该写点什么.最近正好在做一个桌面程序,初次接触JavaFX,体验下来确实比swing好用不少.索性便记记学习笔记吧,虽然FX好像挺没存在感,没人用的感觉. ...

  7. MySQL字符集不一致导致性能下降25%,你敢信?

    故事是这样的: 我在对MySQL进行性能测试时,发现CPU使用率接近100%,其中80%us, 16%sys,3%wa,iostat发现磁盘iops2000以下,avgqu-sz不超过3,%util最 ...

  8. 深度学习与人类语言处理-语音识别(part2)

    上节回顾深度学习与人类语言处理-语音识别(part1),这节课我们将学习如何将seq2seq模型用在语音识别 LAS 那我们来看看LAS的Encoder,Attend,Decoder分别是什么 Lis ...

  9. ESLint {} 内部强制有空格 .eslintrc.js 配置文件 'object-curly-spacing': ["error", "always"],

    module.exports = { root: true, 'extends': [ 'plugin:vue/essential', '@vue/standard' ], rules: { 'obj ...

  10. java第二节课课后

    动手动脑问题 : 程序源代码: //MethodOverload.java //Using overloaded methods public class MethodOverload { publi ...