注意事項(xiàng):


1. 別在頁面加載完后再document.write(),那樣的話會(huì)丟失之前的內(nèi)容。
<button onclick="myFunction()">點(diǎn)擊這里</button>

<script>
function myFunction()
{
document.write("糟糕!文檔消失了。");
}
</script>

2. 函數(shù)聲明與函數(shù)表達(dá)式在代碼執(zhí)行中的不同:

解析器在向執(zhí)行環(huán)境中加載數(shù)據(jù)時(shí),對(duì)函數(shù)聲明和函數(shù)表達(dá)式并非一視同仁。解析器會(huì)率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問);至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正被解釋執(zhí)行。

alert(sum(10,10));             //因?yàn)槭呛瘮?shù)聲明先解釋后執(zhí)行的原因所以可以正常執(zhí)行。
function sum(num1, num2){
return num1 + num2;
}

  1. this在addEventListener中的bug:
//定義一個(gè)可見的盒子用于綁定點(diǎn)擊事件
var box = document.getElementById('box');
box.x = 'box'

//設(shè)置執(zhí)行函數(shù)的對(duì)象屬性
function outFunc() {
  this.x = 'outFunc';
  box.addEventListener('click', func, false);
}
outFunc();

function func() {
  console.log(this.x); //輸出box 說明該this指向的是調(diào)用addEventListener的對(duì)象
}


changeLikeText () {
      const likeText = this.el.querySelector('.like-text')
      this.state.isLiked = !this.state.isLiked
      likeText.innerHTML = this.state.isLiked ? '取消' : '點(diǎn)贊'
}

this.el.addEventListener('click', this.changeLikeText, false)
// 錯(cuò)誤
this.el.addEventListener('click', this.changeLikeText.bind(this), false)
// 正確

當(dāng)函數(shù)作為方法調(diào)用時(shí),this指向調(diào)用該方法的對(duì)象, 當(dāng)函數(shù)作為嵌套函數(shù)調(diào)用時(shí), this指向全局對(duì)象(非嚴(yán)格模式下)或者undefined(嚴(yán)格模式)而不是其外包函數(shù)的上下文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容