盘点常见面试题

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值