標籤:目的 http creat check font png col ons img
關於JavaScript裡面的let,
let 語句可以聲明一個塊級範圍的本地變數,並且可選的將其初始化為一個值。
<ul id="list"> </ul>
var list = document.getElementById("list");for (var i = 1; i <= 5; i++) { var item = document.createElement("LI"); item.appendChild(document.createTextNode("Item " + i)); let j = i; item.onclick = function (ev) { console.log("Item " + j + " is clicked."); }; list.appendChild(item);}
分別點擊頁面的li標籤內容,控制器分別輸出一下內容:
解析:
如果不用let,而改用var的話,將總是列印出 Item 5 is Clicked,因為var聲明的 j 是函數級變數,5個內建函式都指向了同一個 j ,而 j 最後一次賦值是5。
用了let後,j 變成塊級域(也就是花括弧中的塊,每進入一次花括弧就產生了一個塊級域),所以 5 個內建函式指向了不同的 j 。
然而這次要討論的並不是關於let的用法,而是做新項目的時候發現了個新問題:使用了let的項目無法在安卓手機的QQ瀏覽器APP正常開啟頁面。首先推薦個連結: http://ruanyf.github.io/es-checker/index.cn.html(檢測當前的瀏覽器是否支援ECMAScript 6)
左邊是安卓QQ app裡面帶的瀏覽器測得結果,而右邊是安卓QQ瀏覽器APP的測試結果(測試PC端瀏覽器及手機的其他瀏覽器大部分都是90%以上)。
而我目前的解決方案僅是將let改為了var。然後說一下解決這個問題的思路,首先let是ES6新增的文法,所以我們需要去查一下哪些瀏覽器不支援ES6。
比較幸運的是居然找到了上面說到的測試連結,真的很好用,直接用瀏覽器開啟連結就可以知道其相容性。
除了let的問題,本次項目用到了vue.js,剛開始函式宣告方式不嚴謹,但是在PC端,安卓的其他瀏覽器(除了QQ瀏覽器),IOS的瀏覽器包括QQ瀏覽器,都可以正常顯示,唯獨安卓的QQ瀏覽器不能正常顯示。
js的let語句在安卓手機端的QQ瀏覽器出錯的問題