1

我的问题是,DOM 中有一个函数需要初始化一个变量来加载 DOM。问题是即使在加载 DOM 之前没有调用该函数,它也会创建此错误:ReferenceError: variable is not defined。如何做到这一点,最好使用 if 语句,只要变量未初始化,获取变量的部分将被忽略?

<script>
function check(){
    if(num>100) alert('test');
    else alert('test2');
}
window.onload = function() {
    var num = Math.floor(Math.random()*11);
    check();
}
</script>

我知道随着正常工作而改变function check()function check(num)check();check(num);不喜欢这个解决方案,我想了解为什么我的代码不起作用......

4

3 回答 3

1

num仅在onload函数内部定义。check除非您将其作为参数传递,否则您无法在函数中访问它。

function check(num) {
    if( num>100) alert("Test");
    else alert("Test2");
}
window.onload = function() {
    var num = Math.floor(Math.random()*11);
    check(num);
};
于 2013-09-21T15:30:06.657 回答
1

num 的范围都是错误的。试试这个:

var num;
function check(){
    if(num>100) alert('test');
    else alert('test2');
}
window.onload = function() {
    num = Math.floor(Math.random()*11);
    check();
}
于 2013-09-21T15:30:08.417 回答
1
(function (num) { 
    if( num>100) alert("Test");
    else alert("Test2");
})(Math.floor(Math.random()*11));

如果您不介意显式使用 window.onload 事件,则可以使用上述匿名函数。

于 2013-09-21T16:35:42.277 回答