使用document.write返回语句不起作用

时间:2014-06-22 14:47:47

标签: javascript return

为什么document.write(added);不起作用?

function first(){
    var now = new Date();
    var first=Math.round(now.getMilliseconds()/20);
    var second=Math.round(now.getMilliseconds()/30);
    var added=first+second;
    return added;
}
first();
document.write(added);

3 个答案:

答案 0 :(得分:0)

因为added不是全局变量,所以当你调用document.write时它超出了范围。

您需要将返回值保存在调用document.write的同一范围内的变量中,即在这种情况下为全局范围。 正确的代码是:

function first(){
var now = new Date();
var first=Math.round(now.getMilliseconds()/20);
var second=Math.round(now.getMilliseconds()/30);
var added=first+second;
return added;
}
var returnValue = first(); // store returned 'added' in returnValue
document.write(returnValue);

答案 1 :(得分:0)

Javascript具有函数作用域,这意味着函数中声明的任何变量都不能在该函数之外访问。 return added返回已添加的,而不是变量added本身。如果要使用该值,则需要将其放在函数外部声明的变量中:

function first(){
    var now = new Date();
    var first=Math.round(now.getMilliseconds()/20);
    var second=Math.round(now.getMilliseconds()/30);
    var added=first+second;
    return added;
}
var firstResult = first();
document.write(firstResult);

更高级,但相关:Types of Javascript Variable Scope

答案 2 :(得分:0)

由于scope issue已被指出,我只是想添加另一种方式来打印结果

document.write(first());