为什么以下代码段中的MM_SYSTEM_RESTART_SECONDS undefined

如果var MM_SYSTEM_RESTART_SECONDS = 40;放在函数内部,则MM_SYSTEM_RESTART_SECONDS40,但是如果在函数外部,
那么MM_SYSTEM_RESTART_SECONDS始终为undefined

var MM_SYSTEM_RESTART_SECONDS = 40;


function wait_until_MM_restarts()
{
    restart_timeout_start_seconds = get_cookie( "restart_timeout_start_seconds" )
    elapsed_restart_seconds =  elapsed_seconds( restart_timeout_start_seconds )
    append_debug_message( elapsed_restart_seconds + "/" +   MM_SYSTEM_RESTART_SECONDS )
    if( elapsed_restart_seconds > MM_SYSTEM_RESTART_SECONDS )

最佳答案

这只是咬我。如果在变量声明之前/之后调用该函数,则该变量可能未定义。

例如

f("before");

var value = 99;
function f(msg)
{
  alert("msg=" + msg + " value=" + value);
}

f("after");


结果是:

msg=before value=undefined
msg=after value=99


http://jsfiddle.net/qUhQV/4/

关于javascript - 在函数外定义的javascript变量在函数内“未定义”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9593923/

10-15 12:39
查看更多