Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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_Node.js - Fatal编程技术网

javascript函数返回未定义的而不是对象文本

javascript函数返回未定义的而不是对象文本,javascript,node.js,Javascript,Node.js,我刚开始使用javascript,但很快就陷入了一个非常简单的任务——在我看来——返回一个对象文本 我目前拥有的代码如下所示 function wrapInObject(x) { return { y: x }; } console.log(wrapInObject('someValue')); 但是,我没有将对象文本写入控制台,而是打印未定义的——我尝试用数字或其他对象文本调用函数,但没有任何帮助 谢谢你的帮助 这是由于一个被称为的过程,对于有C#

我刚开始使用javascript,但很快就陷入了一个非常简单的任务——在我看来——返回一个对象文本

我目前拥有的代码如下所示

function wrapInObject(x)
{
    return
    {
        y: x
    };
}
console.log(wrapInObject('someValue'));  
但是,我没有将对象文本写入控制台,而是打印未定义的
——我尝试用数字或其他对象文本调用函数,但没有任何帮助


谢谢你的帮助

这是由于一个被称为的过程,对于有C#背景或其他语言背景的新开发人员来说,这常常是一个混乱的根源,在这种情况下,将大括号放在新行是常见的做法

本质上,所发生的事情是在
return
语句后面放置一个隐式分号,这样它将返回
undefined
,并且永远不会“到达”对象文本

要修复它,只需将开口撑杆移动到
return
的末端,就像这样

function wrapInObject(x)
{
    return { 
        y: x 
    };
}

因为自动插入分号

function wrapInObject(x)
{
    return
    {
        y: x
    };
}
console.log(wrapInObject('someValue'));
转换为

function wrapInObject(x)
{
    return ; // semicolon is added
    {
        y: x
    };
}
console.log(wrapInObject('someValue'));  

这是因为分号自动插入在return语句之后添加了一个换行符,使得js引擎像解析分号一样解析该行。将开始括号移动到与return语句相同的行


自动插入分号。是的,空格会把你累死的。删除返回后返回哇-thx很多家伙!没有商业上昂贵的支持等可以更快:这就是为什么你应该总是写你的函数,如
function f(){…
或对象文字表达式,如
return{…
。很好。我复制粘贴了代码,它工作了,因为我的文本编辑器修复了回车。