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。

最新文章

  1. 微信小程序之登录态维护(十一)
  2. 精选12个时尚的 CSS3 效果【附源码下载】
  3. Uncaught TypeError: Object #<Object> has no method 'fancybox'
  4. 南阳理工OJ 15 括号匹配
  5. C#中标准Dispose模式的实现
  6. 简单粗暴的“Debug模式”
  7. Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法
  8. ABP官方文档翻译 3.7 领域事件(事件总线)
  9. EF+Redis(StackExchange.Redis)实现分布式锁,自测可行
  10. Python之旅:元组
  11. opencv hog算子
  12. AngularJS实现跨域请求
  13. php实现简单的权限管理
  14. window.print
  15. DRF(2) - 解析器,序列化组件使用(GET/POST接口设计)
  16. 基于java容器注解---基于泛型的自动装配
  17. python中的enumerate使用
  18. OpenCV——黑白调整
  19. [HDU2829] Lawrence [四边形不等式优化dp]
  20. 钉钉/支付宝小程序和微信小程序的区别及转换方案

热门文章

  1. 有了这个开源 Java 项目,开发出炫酷的小游戏好像不难?
  2. 一个基于Bootstrap实现的HMTL可视化编辑工具
  3. Python正则表达式语法
  4. 数据结构 4 时间复杂度、B-树 B+树 具体应用与理解
  5. Python网络协议(osi七层协议)
  6. 如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李
  7. Linux启动nginx时报错nginx: [emerg] getpwnam("nginx") failed
  8. 结题报告--hih0CoderP1041
  9. svn 追责神器 blame vscode - SVN Gutter
  10. Mol. Cell. Proteomics | 糖蛋白基因组学:一种常见的基因多态性影响人血清胎球蛋白/α-2-HS-糖蛋白的糖基化形式