gpt4 book ai didi

javascript 返回函数返回未定义

转载 作者:行者123 更新时间:2023-11-30 10:14:25 27 4
gpt4 key购买 nike

谁能解释为什么我的三个示例函数中的第一个 (ref failFunc()) 应该返回一个未定义的值而不是一个有效的字符串?

我知道我可以通过将表达式括在括号中 (ref worksFunc1()) 或将结果放在中间变量中 (ref worksFunc2()) 来解决问题但第一个函数未能返回字符串这一事实与我在其他编程语言中所经历的任何事情背道而驰。

fiddle 在这里: http://jsfiddle.net/BloodBaz/zGLmy/

JavaScript:

var rs = {};

rs.failFunc = function(n)
{
var h = "0010";
var m = "15";
var s = "12";
var c = "10";

return
h.substr(h.length - 4) + ":" +
m.substr(m.length - 2) + ":" +
s.substr(s.length - 2) + "." +
c.substr(c.length - 2);
}
rs.worksFunc1 = function(n)
{
var h = "0010";
var m = "15";
var s = "12";
var c = "10";

return (
h.substr(h.length - 4) + ":" +
m.substr(m.length - 2) + ":" +
s.substr(s.length - 2) + "." +
c.substr(c.length - 2));
}
rs.worksFunc2 = function(n)
{
var h = "0010";
var m = "15";
var s = "12";
var c = "10";

var res =
h.substr(h.length - 4) + ":" +
m.substr(m.length - 2) + ":" +
s.substr(s.length - 2) + "." +
c.substr(c.length - 2);
return res;
}


var res = rs.failFunc();
document.getElementById('output1').innerHTML = res;
var res = rs.worksFunc1();
document.getElementById('output2').innerHTML = res;
var res = rs.worksFunc2();
document.getElementById('output3').innerHTML = res;

HTML:

<div id='output1'>output</div>
<div id='output2'>output</div>
<div id='output3'>output</div>

输出:

undefined
0010:15:12.10
0010:15:12.10

最佳答案

JavaScript 语法很奇怪。一个特别奇怪的部分是 return 语句后跟一个换行符被认为是 return;。没有表达式的 return 意味着对于调用者来说,返回值是 undefined

因此,

return 
h.substr(h.length - 4) + ":" +
m.substr(m.length - 2) + ":" +
s.substr(s.length - 2) + "." +
c.substr(c.length - 2);

实际上等同于

return;
h.substr(h.length - 4) + ":" +
m.substr(m.length - 2) + ":" +
s.substr(s.length - 2) + "." +
c.substr(c.length - 2);

Read all about it in the language spec.

关于javascript 返回函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24680786/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com