javascript,函数返回一个值,但我不能将返回值赋给变量
下面是一些代码,为了在linux系统上返回文件大小,javascript使用rhino运行 运行以下函数将返回一个值:javascript,函数返回一个值,但我不能将返回值赋给变量,javascript,rhino,Javascript,Rhino,下面是一些代码,为了在linux系统上返回文件大小,javascript使用rhino运行 运行以下函数将返回一个值: function fsize(file){ var filesize = runCommand("stat","-c %s",file).output(); return filesize; } e、 g: 返回以字节为单位的文件大小 但如果我跑步: var filesize = fsize(testfile); 当我尝试输出var filesize时,它
function fsize(file){
var filesize = runCommand("stat","-c %s",file).output();
return filesize;
}
e、 g:
返回以字节为单位的文件大小
但如果我跑步:
var filesize = fsize(testfile);
当我尝试输出var filesize时,它是“未定义的”
我做错了什么
编辑:我的输出函数:
function output(strings){
print(strings);
}
编辑:以下是shell输出:
js> var file = "/var/www/javascript/ProgressMon/progressmon.js"
js> fsize(file);
683
js> var filesize = fsize(file);
683
js> output(filesize);
undefined
js>
我只是在猜测,但看起来您是通过Ajax运行命令的。如果你要做:
var filesize = fsize(testfile);
alert(filesize);
它将是未定义的,因为Javascript将继续代码并执行下一行,即使它仍在等待服务器的响应
您可以尝试添加一个超时,或者在完成时向runCommand()
添加一个回调,以警告返回的变量
同样,这只是一个猜测,但在处理Ajax和Javascript时通常都是这样。我只是在猜测,但看起来您是通过Ajax运行命令。如果你要做:
var filesize = fsize(testfile);
alert(filesize);
它将是未定义的,因为Javascript将继续代码并执行下一行,即使它仍在等待服务器的响应
您可以尝试添加一个超时,或者在完成时向runCommand()
添加一个回调,以警告返回的变量
同样,这只是一个猜测,但在处理Ajax和Javascript时通常都是这样。执行此操作并检查函数runCommand是否无法执行
function fsize(file){
try{
return runCommand("stat","-c %s",file).output();
catch(err) {
alert('Error:'+ err);
return -1;
}
}
var filesize = fsize(testfile);
编辑
基于
语法是runCommand(command,arg1,…,argN,options)
i不确定.output()代码>
试着这样做
var opt={err: ''}
runCommand("stat","-c %s",file, opt)
编辑
而不是调用输出(文件大小)代码>
直接调用它filesize
这是你想做的
js> var opt={output: ''}
js> runCommand("stat","-c %s",file, opt)
js> print(opt.output)
执行此操作并检查函数runCommand是否无法执行
function fsize(file){
try{
return runCommand("stat","-c %s",file).output();
catch(err) {
alert('Error:'+ err);
return -1;
}
}
var filesize = fsize(testfile);
编辑
基于
语法是runCommand(command,arg1,…,argN,options)
i不确定.output()代码>
试着这样做
var opt={err: ''}
runCommand("stat","-c %s",file, opt)
编辑
而不是调用输出(文件大小)代码>
直接调用它filesize
这是你想做的
js> var opt={output: ''}
js> runCommand("stat","-c %s",file, opt)
js> print(opt.output)
问题是您希望返回某些内容,但从未告诉函数返回任何内容
function output(strings){
print(strings);
//missing return
}
因此,如果函数从未执行任何返回
,它将返回未定义的
(如果只使用返回;
,也会发生这种情况)
此外,要使用此功能,我认为您需要更改:
var filesize = runCommand("stat","-c %s",file).output();
与
问题是您希望返回某些内容,但从未告诉函数返回任何内容
function output(strings){
print(strings);
//missing return
}
因此,如果函数从未执行任何返回
,它将返回未定义的
(如果只使用返回;
,也会发生这种情况)
此外,要使用此功能,我认为您需要更改:
var filesize = runCommand("stat","-c %s",file).output();
与
请包括行为与预期不同的代码行(例如“输出”行)。使用控制台.log
或警报
,查看函数中的var filesize
是否包含任何内容。在何处/何时调用执行var filesize=fsize(testfile)代码>以及您尝试在何处/何时输出文件大小
?这里的背景很重要。没有它,我们只能猜测(我们不喜欢这样)。从我所看到的,输出
函数调用的计算结果为未定义
,但这不是问题,因为该函数不输出到控制台,而是输出到其他地方。。。如果要将变量“输出”到控制台,只需执行它(作为表达式)。因此,输出功能输出到哪里?输出功能只是一个打印命令,我在其中创建了一个函数来更改名称。请包括行为与您预期不同的代码行(例如“输出”行)。使用console.log
或alert
查看函数中的var filesize
是否包含任何内容。在何处/何时调用executingvar filesize=fsize(testfile)代码>以及您尝试在何处/何时输出文件大小
?这里的背景很重要。没有它,我们只能猜测(我们不喜欢这样)。从我所看到的,输出
函数调用的计算结果为未定义
,但这不是问题,因为该函数不输出到控制台,而是输出到其他地方。。。如果要将变量“输出”到控制台,只需执行它(作为表达式)。那么,输出函数输出到哪里呢?输出函数只是一个打印命令,我在其中创建了一个函数来更改名称。谢谢你提供的信息,我实际上使用rhino来运行代码,请看我上面的shell输出。我添加了一些代码。我后来看到并实现了它。哦,好吧,谢谢你提供的信息,我实际上是在使用rhino来运行代码,看看我上面的shell输出,我后来看到并实现了它。虽然opt.output返回两次以字节为单位的文件大小,但这是可行的。。。不知道为什么,也不知道为什么它本来不起作用,谢谢你的帮助!!!虽然opt.output返回两次以字节为单位的文件大小,但仍然有效。。。不知道为什么,也不知道为什么它本来不起作用,谢谢你的帮助!!!