Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回未按预期工作_Javascript - Fatal编程技术网

Javascript 返回未按预期工作

Javascript 返回未按预期工作,javascript,Javascript,Console.log正在打印未定义。为什么? 我的预期输出是:您的汽车是2010现代伊兰特您返回的是printc的值,而不是将其分配给汽车对象。此外,this.year将始终是未定义的,除非您手动将它们分配给Car对象 请尝试以下操作: var Car = function (year, make, model) { var printc = "You car is" + this.year + this.make + this.model; ret

Console.log正在打印未定义。为什么?
我的预期输出是:您的汽车是2010现代伊兰特

您返回的是
printc
的值,而不是将其分配给
汽车
对象。此外,
this.year
将始终是未定义的,除非您手动将它们分配给
Car
对象

请尝试以下操作:

var Car = function (year, make, model) {
         var printc = "You car is" + this.year + this.make + this.model;    
         return printc;
    }
var mycar = new Car(2010, "Hyundai", "Elantra");
console.log(mycar.printc);

请注意,不会保留空格,因此您可能希望更新
printc
分配,如下所示:

var Car = function (year, make, model) 
{
     this.printc = "You car is" + year + make + model;    
}

var mycar = new Car(2010, "Hyundai", "Elantra");

// Correctly returns: You car is2010HyundaiElantra
console.log(mycar.printc);

或者,您可以使用ES6类:

“严格使用”;
班车{
建造商(年份、品牌、型号){
今年=年;
make=make;
this.model=模型;
}
printC(){
return`Your car is${this.year}${this.make}${this.model}`;
}
}
const myCar=新车(2010年,“现代”、“伊兰特”);

document.write(myCar.printC())谢谢Ben,我正在尝试理解“return”的用法。是否可以像我在原始代码中尝试的那样使用“return”语句打印值?是的,但是您不应该使用
new
关键字。你需要:<代码>控制台。日志(Car(2010,“现代”,“ELANTRA”))< /代码>。好的,我试过了,然后打印,你的车是未定义的未定义的。谢谢,本,在从年移除这个模型后,让它工作。@ PuneETSARMA请考虑接受这个作为正确的答案。您接受的示例非常差。谢谢,我想知道为什么需要删除此示例,为什么需要将“mycar.printc”更改为“mycar”以使其正常工作。。。。。“printc”不是“Car”对象的属性。您可以使用点符号访问对象的属性。。。。对不起,如果我的声明看起来很愚蠢,只是想提高我的js技能。。。。再次感谢…你到底为什么要从object Instantiator返回
字符串?这是非常混乱和难以维护的
printc
应该是
Car
的成员变量。这是一个糟糕的编码建议!这是对您的代码的修改,只是为了让它工作,正确的方法是@BenM提供的方法。感谢您的评论。实际上,它试图返回一个“函数”而不是“字符串”。变量“printc”被包装在一个函数中。但因为它不起作用,我删除了包装器函数进行故障排除。
 this.printc = "You car is " + year + ' ' + make + ' ' + model; 
var Car = function (year, make, model) {
     var printc = "You car is" + year + make + model;    
     return printc;
}

var mycar = Car(2010, "Hyundai", "Elantra");
console.log(mycar);