js异步加载的方案
1、defer 只支持IE浏览器(IE9以下)
<script src="" defer></script>
2、async 加载完就执行 ,W3C标准方法
<script src="" async></script>
3、按需加载:创建script,设置src属性,变为异步了,插入到DOM,加载完毕后callback
<script type="text/javascript">
function loadScript(url, callback) {
var script = document.createElement('script'); //创建一个script标签
script.type = 'text/javascript';
if (script.readyState) {
script.onreadystatechange = function(){ //针对老版本IE浏览器
if(script.readyState == 'complete' || script.readyState == 'loaded') { //判断所有资源是否加载完成
callback || callback();
}
}
}
script.src = url; //考虑网速状况
document.head.appendChild(script);
}
</script>
冒泡排序
<script type="text/javascript">
function bubble (arr) {
const len = arr.length - 1;
let flag = 0; //,优化:当最后一轮比较时无交换值时,此时这轮比较就没有意义,就应退出循环
for (let i = 0; i < len; i++) {
for (let j = 0; j < len-i; j++) { //当前循环中需要比较的次数,每进入循环一次比较次数就减1
if (arr[j] > arr[j+1]) { //进行比较,若前一位比后一位大,则交换两位的值
const temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
flag = 1;
}
}
if (flag == 0) { //没有进行排序,就跳出循环
break;
}
}
}
const arr = [3,5,7,9,2,6,9,4,1]
bubble(arr);
console.log(arr)
</script>
写出JS提取URL中的各个GET参数,将其按key-value形式返回
function geturl(url){
let res={};
url=url.substr(url.indexOf("?")+1);
let args=url.split("&");
for (let i = 0, len = args.length; i < len; i++) {
let arg = args[i];
let item = arg.split('=');
res[item[0]]= item[1];
}
return res;
}