亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

作用域的問題,可以講解一下下面代碼運行的過程嗎?

作用域的問題,可以講解一下下面代碼運行的過程嗎?

慕小課108 2020-04-07 23:11:42
<!DOCTYPE html><html><head>? ? <meta charset="utf-8"> <title>變量、作用域</title>? ??</head><body> <button>1</button> <button>2</button> <button>3</button>? ? <script type="text/javascript">//? ? ?var btns = document.getElementsByTagName('button');//? ? ? ? ? for (var i = 0; i < 3; i++) {//? ? ? ? ? ? ? btns[i].onclick = function () {// ? ? alert(i + 1);// ? ? };// ? ?}//在此處修改代碼? ? ? ? var btns = document.getElementsByTagName("button");? ? ? ? for(var i = 0,len = btns.length;i < len;i++){;? ? ? ? ? ? myChange(i);? ? ? ? }? ? ? ? function myChange(i){? ? ? ? ? ? btns[i].onclick = function(){? ? ? ? ? ? ? ? alert(i + 1);? ? ? ? ? ? }? ? ? ? }? ? </script></body></html>
查看完整描述

1 回答

?
第二鋼協

TA貢獻29條經驗 獲得超5個贊

//?你的所有變量全是用?var?和?function?定義的,所以存在變量提升

//?1.?變量提升(將所有變量的聲明提升到當前作用域最前面):
//????var?btn;
//????function?myChange;

//?2.?執行:
//????btn?=?document.getElementsByTagName("button");
//????for?(var?i?=?0,?len?=?btns.length;?i?<?len;?i++)?{
//????????myChange(i);
//????}


查看完整回答
反對 回復 2020-04-08
  • 第二鋼協
    第二鋼協
    建議你看看es6 的 let, 別用var定義變量,變體提升很可能導致一些無法預料的問題,建議在以后的開發過程中都用let,摒棄var
  • 1 回答
  • 0 關注
  • 713 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號