欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 吐槽

李佳璐1年前7瀏覽0評論
最近我在學習JavaScript,不禁感慨這門語言的坑確實不少??!一不小心就會踩中,讓人魚兒淚崩。下面我來吐槽一下我遇到的一些問題。

首先是JavaScript的弱類型,在變量賦值的時候沒有類型檢查,導致我在操作數據時經常會遇到一些奇怪的問題。比如:

var num = "1";
console.log(num + 1); //輸出"11",因為num是字符串類型

這就令人很無語了,如果變量類型錯誤的話,我們往往會浪費很多時間來查找問題所在。

其次是JavaScript的作用域,這也是我最常踩的坑之一。在使用var定義變量時,如果不注意作用域的問題,就會導致程序出現一些奇怪的錯誤。比如:

for (var i = 0; i< 5; i++) {
setTimeout(function () {
console.log(i);
}, 1000);
}

這段代碼本來應該輸出0,1,2,3,4,但是結果是5,5,5,5,5。這是因為setTimeout是異步的,當循環結束后才會執行,而此時i已經是5了。

還有一個常見的問題就是this的指向,它經常讓人頭疼。在JavaScript中,this的指向是動態的,具體是由函數的調用方式來決定的。比如:

var obj = {
name: "jack",
sayName: function () {
console.log(this.name);
}
};
var sayName = obj.sayName;
sayName(); //輸出undefined,因為此時this指向的是window對象

這一點需要我們在編寫代碼的時候特別注意,不然很容易就會出現思路混亂的情況。

最后一個問題是JS的異步事件隊列,也是我覺得最令人頭疼的一個問題。如果處理不好異步事件,也容易導致程序出現各種奇怪的錯誤。比如:

var oImg = document.createElement("img");
oImg.src = "image.png";
oImg.onload = function () {
console.log(oImg.width);
};
console.log(oImg.width); //輸出0,因為圖片還沒有加載完成

如果不注意異步事件的處理,很容易就會出現前后數據不一致的問題。

以上就是我在學習JavaScript時遇到的一些坑,當然這些只是我碰到的問題,實際上還有很多其他的問題。如果大家對這些問題有更好的掌握經驗,歡迎留言