变量作用域的问题

clipboard.png

function iptDom() {
    var iptValue = getIptValue();
    console.log(iptValue)
    AddUl();
    createHintContent();

}

function getIptValue() {
    // 注意获取input中的内容要用value
    return emailIpt.value;
}

function AddUl() {
    for(j = 0,len=postfixList.length; j < len; j++) {
        let li = document.createElement('li');
        li.innerText = `${iptValue}${postfixList[j]}`;
        emailWrapper.appendChild(li);
    }
}

请问这个iptValue变量为什么报错未定义?我的理解是addUl()函数里使用的这个iptValue变量应该能从外层作用域(iptDom这个函数作用域)里获取到,请问我的理解哪里有错误

阅读 1.8k
3 个回答

你好,无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处
的位置决定。我建议你将AddUl函数定义在iptDom里面,我觉得问题就能解决掉了。你试试。

这是由于函数作用域限制导致的~ 同块级作用域 let 定义变量

有一个简单的差别方法,你使用变量的那段代码所在的函数体内(指 var,如果是 letconst 是块)是否有定义这个变量。如果有,那就可用,如果没有,那就用不了。不需要想太多 Runtime 相关的事情,只需要从代码上看就行。

你这个情况,还是给 AddUl 定义参数吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题