网站首页 > 技术文章 正文
本期问题:
-
document.write和innerHTML、innerText有什么区别?
-
jQuery中如何中断each遍历?
-
如何查找数组中的最小值和最大值?
-
如何做到优雅降级,渐进增强?
-
$.fn.extend和$.extend区别是什么?
-
如何收集页面中多个ajax的执行结果?
-
js创建对象有哪几种方式?
-
在地址栏输入url中间会经历什么?
-
你所了解的前端技术栈有哪些?
-
ajax在jquery底层是如何实现的?
上期答案:
1.实例化一个函数的时候,new关键字的过程是怎样的?
答:
1.创建一个新对象;
2.将构造函数的作用域赋给新对象(因此this指向了这个新对象);
3.执行构造函数中的代码(为这个新对象添加属性);
4.返回新对象
2.什么是js阻塞?
答:
Js具有阻塞特性,当浏览器在执行js代码时,不能同时做其他事情,即<script>标签每次出现都会让页面等待脚本的解析和执行,Js执行完成后,才能继续渲染页面。
再深入一点去了解浏览器构造页面的原理:当浏览器从服务器接收到了HTML文档,并把HTML在内存中转换成DOM树,在转换的过程中如果发现某个节点(node)上引用了CSS或者IMAGE,就会再发1个request去请求CSS或image,然后继续执行下面的转换,而不需要等待request的返回,当request返回后,只需要把返回的内容放入到DOM树中对应的位置就OK。
但当引用了JS的时候,浏览器发送1个js request就会一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代码直接改变了DOM树结构,比如使用document.write 或 appendChild,甚至是直接使用的location.href进行跳转,浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。
for(var i = 0 ; i < 10; i++){
setTimeout(function{
console.log(i);
}, 0);
}
答:
都是10
因为setTimeout是异步的,在执行setTimeout时for循环已结束。
- 上一篇: HTML实体编码及解码
- 下一篇: 告别油猴,用Proxyman自动注入JSRPC脚本的黑科技
猜你喜欢
- 2025-07-23 跨域问题解决方案:JSONP(跨域怎么解决,jsonp原理叙述)
- 2025-07-23 技术总监说:“每一个v-html,都是一个敞开的XSS后门”
- 2025-07-23 浏览器的同源策略与跨域问题(浏览器同源政策)
- 2025-07-23 资源提示关键词:提升页面加载速度的利器
- 2025-07-23 JavaScript DOM 内容操作常用方法和 XSS 注入攻击
- 2025-07-23 小红书笔记拉取AI改写的抛砖引玉(小红书笔记替换后新的能收录吗)
- 2025-04-27 JavaScript注释:单行注释和多行注释详解
- 2025-04-27 贼好用的 Java 工具类库
- 2025-04-27 一文搞懂,WAF阻止恶意攻击的8种方法
- 2025-04-27 详细教你微信公众号正文页SVG交互开发
- 08-02【语法总结】新概念一Lesson 21-22
- 08-02【课文详解】新概念一Lesson 23-24
- 08-02【课文详解】新概念一Lesson 21-22
- 08-01Linux Systemd入门
- 08-01使用 Checkmk 监控 Oracle 服务器
- 08-01核心库CPU飙到99%了!我发现很多DBA都不会看日志……
- 08-01China's CETC Kingbase Unveils AI-Powered Database Appliances Amid Rising Demand for Intelligent Data Infrastructure
- 08-01Docker安装部署Oracle/Sql Server
- 1520℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 623℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 526℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 491℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 460℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 458℃MySQL server PID file could not be found!失败
- 最近发表
-
- 【语法总结】新概念一Lesson 21-22
- 【课文详解】新概念一Lesson 23-24
- 【课文详解】新概念一Lesson 21-22
- Linux Systemd入门
- 使用 Checkmk 监控 Oracle 服务器
- 核心库CPU飙到99%了!我发现很多DBA都不会看日志……
- China's CETC Kingbase Unveils AI-Powered Database Appliances Amid Rising Demand for Intelligent Data Infrastructure
- Docker安装部署Oracle/Sql Server
- Oracle数据库安装 | 步骤详细
- 基于Springboot + vue实现的社团管理系统
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- js~~ (67)
- node_modules怎么生成 (87)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)