Javascript 为什么是';未定义';
我是JavaScript新手,我只是想理解为什么“z”返回为未定义Javascript 为什么是';未定义';,javascript,undefined,Javascript,Undefined,我是JavaScript新手,我只是想理解为什么“z”返回为未定义 var z=functionWithParameters(4,3); 带参数的函数(x,y){ if(typeof z!=“未定义”){ document.getElementById(“functionWithParameters”).innerHTML=z; console.log('内部函数:'+z); log('内部函数:z是一个'+类型的z'); } log('返回前:z='+z); 返回x*y; } log('外部
var z=functionWithParameters(4,3);
带参数的函数(x,y){
if(typeof z!=“未定义”){
document.getElementById(“functionWithParameters”).innerHTML=z;
console.log('内部函数:'+z);
log('内部函数:z是一个'+类型的z');
}
log('返回前:z='+z);
返回x*y;
}
log('外部函数:z='+z)代码>
带参数的函数(4,3);
将变量z
的值设置为带有参数的函数的返回值。
因此,在函数functionWithParameters
返回值之前,
变量z
的值未定义。这是
因为在函数functionWithParameters
返回值之前,它没有得到任何值
console.log
不起作用的原因是
因为您的脚本有一个活动错误,您的脚本必须停止。请按照加载/执行DOM的顺序阅读此问题的答案
你写道:
如果我删除了:If(typeof z!=“undefined”),代码结果为[…]
行:console.log('外部函数:z='+z);不执行。我认为这可能是因为函数有一个return语句,但是注释掉返回并没有改变结果
这是因为在加载p
标记之前执行functionWithParameters
函数,这会导致document.getElementById(“functionWithParameters”)
抛出错误,因为您试图查找的p
标记当时不存在
TypeError: document.getElementById(...) is null[Learn More] (from Firefox)
函数正在抛出异常,因此z
永远无法获取值。出现此异常的原因是您试图在文档加载完成之前访问元素
解决此问题的一个简单方法是将脚本加载到html文件的底部(在
之前)。您不了解函数执行流程
var z = functionWithParameters(4, 3);
//call functionwithParamarters,and run into function body,
//at this time the value of z is undefined,
//the if statement block is not executed,then output z is undefined.
//after call functionWithParameters ,z is 12
function functionWithParameters(x, y) {
if (typeof z !== "undefined") {
document.getElementById("functionWithParameters").innerHTML = z;
console.log('inside function: ' + z);
console.log('inside function: z is a ' + typeof z);
}
console.log('before return: z = ' + z);
return x * y;
}
console.log('outside function: z = ' + z);
//at this line z is 12
functionWithParameters(10, 10);
//z still is 12 , calling functionWithParameters dont change value of z
//and if statement block is executed.
我猜是的。因此,z
没有给定值且未定义。逻辑没有意义。如何在函数内部定义依赖于函数返回的变量?@charlietfl我不知道这个例子,但它在递归关系算法中是有意义的。这可能无关紧要,但是我用这个页面作为参考编写了我的函数:知道undefined@charlietfl抛出这个错误的不是放在p
标记之后的函数执行。这是他在之后发布的脚本,必须在加载p
标记之前执行。谢谢,这很有帮助。这是有道理的,我想我应该意识到发生了什么。大家好,感谢所有的反馈。这一切都很有用,但对我来说,这个答案和LineK提供的链接是最有帮助的。我已经预订了这个链接,以防我需要再次引用它。这绝对是正确的答案。Z=函数“functionWithParemters”的返回值,因此在functionWithParemters返回值之前,Z是未定义的。因此,在执行return语句之前,Z是未定义的。在函数内部,z显示为未定义,原因与此相同。我还在HTML头标记中加载javascript。我应该将其加载到正文中吗?@Tony这就是我在回答中的意思,您的代码在加载p
标记之前执行,因此它在第一次函数运行时不存在,您将在阅读我在回答中链接的答案后理解它。脚本需要位于您要使用的p标记下。所以是的,把剧本放在正文里 //这里的代码哇。。我是这个社区的新成员。我觉得这个社区很酷