关于Web的学习(18.6.7)——javascript篇

1.能解释一下[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) })这段代码的意思吗?

  • 可在浏览器控制台输入查看效果。会发现HTML层都被使用不同的颜色添加了一个高亮的边框;
  • [].forEach.call()等价于Array.prototype.forEach.call();
  • 可以在浏览器控制台中输入$$('a'),然后就能得到一个当前页面中所有锚元素的列表;
  • $ $函数是许多现代浏览器命令行API中的一个部分,它等价于document.querySelectorAll,你可以将一个CSS选择器作为这个函数的参数,然后你就能够获得当前页面中所有匹配这个CSS选择器的元素列表。如果你在浏览器控制台以外的地方,你可以使用document.querySelectorAll('')来代替$ $('');
  • outline属性位于CSS盒模型之外,因此它并不影响元素的属性或者元素在布局中的位置;
  • ~~的作用相当于parseInt;
  • 1<<24,也就是1向左移24位,也就是2的24次方;
  • toString(16)把数字转换成16进制的字符串;
  • 通过上面代码可以获取到一个随机的颜色值。


2.js延迟加载的方式有哪些?

defer和async、动态创建DOM方式(用得最多)、按需异步载入js。

附:


3.Ajax 是什么? 如何创建一个Ajax?

ajax的全称:Asynchronous Javascript And XML。

异步传输+js+xml。

所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。

  • 创建XMLHttpRequest对象,也就是创建一个异步调用对象
  • 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息
  • 设置响应HTTP请求状态变化的函数
  • 发送HTTP请求
  • 获取异步调用返回的数据
  • 使用JavaScript和DOM实现局部刷新


4.Ajax 解决浏览器缓存问题?

  • 在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
  • 在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
  • 在URL后面加上一个随机数: "fresh=" + Math.random();。
  • 在URL后面加上时间戳:"nowtime=" + new Date().getTime();。
  • 如果是使用jQuery,直接这样就可以了 $.ajaxSetup({cache:false})。这样页面的所有ajax都会执行这条语句就是不需要保存缓存记录。


5.同步和异步的区别?

同步的概念应该是来自于OS中关于同步的概念:不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式)。同步强调的是顺序性,谁先谁后,异步则不存在这种顺序性。

  • 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。
  • 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

猜你喜欢

转载自blog.csdn.net/qq_36048820/article/details/80611646