就是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。 20、说说ajax的原理?...Ajax的原理简单来说就是在用户和服务器之间加了一个中间层(Ajax引擎),由XmlHttpRequest对象来向服务器发异步请求,从服务器获取数据,然后用javascript来操作DOM而更新页面。...==来判断true、false; 尽量使用字面量代替new Array这种形式; 不要使用全局函数; Switch语句必须带有default分支; if语句必须使用大括号; for-in循环中的变量应该使用...42、javascript数组去重的方法汇总?...冒泡排序; 快速排序; 54、javascript数组一行代码去重方法? set方法去重。 55、javascript如何判断一个对象是否为数组?
注意:实际上可以设置同步Ajax请求,但永远不要那样做。如果设置同步Ajax请求,应用程序的界面将被阻塞——用户将无法单击、输入数据、导航或滚动。这将阻止任何用户交互,这是一种可怕的做法。...以下是同步 Ajax 地,但是请千万不要这样做: ? 这里使用Ajax请求作为示例,你可以让任何代码块异步执行。...例如,当 JavaScript 程序发出 Ajax 请求从服务器获取一些数据时,在函数(“回调”)中设置“response”代码,JS引擎告诉宿主环境:"我现在要推迟执行,但当完成那个网络请求时,会返回一些数据...现在只讨论这个概念,以便在讨论带有Promises的异步行为时,能够了解 Promises 是如何调度和处理。 想像一下:任务队列是一个附加到事件循环队列中每个标记末尾的队列。...Promise 对象的回调链,不管以 then 方法或 catch 方法结尾,要是最后一个方法抛出错误,都有可能无法捕捉到(因为 Promise 内部的错误不会冒泡到全局)。
循环过程: 拿到一段代码并执行 将代码中的同步任务交给主线程,形成执行栈 将代码中的异步(宏)任务交给异步处理线程 将异步处理的事件回调推入任务队列 当执行栈中的同步任务执行完成后,调用任务队列中的异步回调...比如一个 ajax 请求,在发送请求时,浏览器将请求交给异步线程处理;请求完成后,异步线程将事件回调推入任务队列,等待 JS 主线程调用;请求的实现是由浏览器 IO 线程和服务器完成的。...监听对象的变化,已废弃) 宏任务,依赖浏览器等宿主环境; 微任务,在 JS 引擎中执行,不会造成阻塞,也不参与事件循环。...微任务和宏任务的执行顺序 在同一次循环中,微任务比宏任务优先执行,任务按照推入队列的顺序执行(FIFO)。...如果宏任务中包含微任务,这个微任务会被带到下一次循环中执行。
DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。 ②标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。...在JS中如何操作Cookie? 简述cookie,在JS中如何操作cookie 15、谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制。...详细请看以下推荐链接 深入理解JavaScript的闭包特性 如何给循环中的对象添加事件 29、javascript的本地对象,内置对象和宿主对象 ①本地对象为array obj regexp等可以new...②一般我首先统一页面和服务器编码,对请求和响应的Content-Type设置正确编码;对请求参数进行编码处理。...2、Javascript与jQuery有什么区别? jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单。 3、在jQuery中如何注册事件?
文章目录 一、JavaScript提升篇 1、什么是跨域? 2、什么是原型? 3、什么是闭包? 4、如何防抖?...20、写入一个函数,将abcd以实参传入返回[1,2,3,4,5,6] 21、微任务&宏任务常见笔记题一 22、微任务&宏任务常见笔记题二 23、前端如何优化网站性能?...token相对cookie的优势: 1、支持跨域访问 ,将token置于请求头中,而cookie是不支持跨域访问的; 2、无状态化, 服务端无需存储token ,只需要验证token信息是否正确即可,...当GET请求从后台页面返回时,可以返回一段JavaScript代码,这段代码会自动执行,可以用来负责调用后台页面中的一个callback函数。...、continue和return语句 (2)for…in是用来循环带有字符串key的对象的方法。
Node 在每个事件循环中都有一个或多个观察者,而判断是否有事件需要处理的过程就是向这些观察者询问是否有要处理的事件。 在 Node 中,事件主要来源于网络请求,文件 I/O 等。...从 JavaScript 层传入的参数和当前方法都封装在这个请求对象中,回调函数也是这个请求对象的一个属性。而操作系统拿到这个对象后,将 FSReqWrap 对象推入线程池中等待执行。...I/O 观察者取出请求对象的 result 属性作为参数,取出绑定在上面的回调函数,然后执行,以此达到调用 JavaScript 回调函数的目的。至此,整个异步 I/O 完成。...在行为上,process.nextTick() 在每次轮询中会将数组内全部回调函数执行完,setImmediate() 在每次循环中只执行链表的第一个回调函数。...总结 异步 I/O 的核心是事件循环,Node 使用了和浏览器中一样的执行模型,让 JavaScript 在服务端发挥巨大的能量。
两个函数: JSON.parse(str) 解析JSON字符串 把JSON字符串变成JavaScript值或对象 JSON.stringify(obj) 将一个JavaScript值(对象或者数组)转换为一个...(如何动态加载的?如何避免多次加载的?如何缓存的?) 核心是js的加载模块,通过正则匹配模块以及模块的依赖关系,保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存。...(或者:请求资源的时候不要带cookie怎么做) 通过使用多个非主要域名来请求静态文件,如果静态文件都放在主域名下,那静态文件请求的时候带有的cookie的数据提交给server是非常浪费的,还不如隔离开...因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。...(1)通过location.hash记录状态,让浏览器记录Ajax请求时页面状态的变化。 (2)通过HTML5的history.pushstate,来实现浏览器地址栏的无刷新改变。
JavaScript 运行时环境 前言 每一个浏览器都有自己的 Js 运行时环境 AJAX、DOM树、以及其他的API,都是Javascript的一部分,它们本质上就是浏览器提供的、在JS运行时环境中可调用的...、拥有一些列属性和方法的对象 除此之外,用来解析代码的 JavaScript 引擎也是位于 Js 运行时环境中的。...后面以 Chrome V8 引擎来展开。 Js 运行时环境 运行时环境可以看作一个大容器,里面有很多小容器,当 Js 引擎去解析代码时,就是把代码片分布到不同的容器里。...堆 栈 Web Api 容器 调用栈中的 Web Api 调用会被分发到该容器里,比如事件监听函数、Http/Ajax 请求、或者是定时器,这些事件在该容器里直到达到触发条件,回调函数便会被推入回调队列里...Http 请求执行完会被分发到 Web Api 容器等待回应,然后弹出栈,即使无法请求到数据不影响后续函数执行。所以,JavaScript 是一个非阻塞语言。
AJAX只是使用以下组合: 浏览器内置的XMLHttpRequest对象(用于从Web服务器请求数据) JavaScript和HTML DOM(用于显示或使用数据) AJAX是一个具有误导性名称的技术。...AJAX的工作原理 网页中发生事件(页面加载,按钮被点击) JavaScript创建XMLHttpRequest对象 XMLHttpRequest对象向Web服务器发送请求 服务器处理请求 服务器将响应发送回网页...JavaScript读取响应 JavaScript执行适当的操作(例如页面更新) AJAX - XMLHttpRequest对象 AJAX的核心是XMLHttpRequest对象。...您还会在旧的JavaScript代码中找到同步请求。...将请求发送到服务器上的文件 注意,将一个参数(q)添加到 URL(带有下拉列表的内容) AJAX 服务器页面 - "getcustomer.php" 由上面的 JavaScript 调用的服务器上的页面是一个名为
有学过,计算机网络,操作系统,组成原理,数据库,前端等等 3.数组和链表有什么区别和特点 数组: 顺序存储:数组中的元素在内存中是连续存储的。 随机访问:可以通过索引直接访问数组中的任意元素。...然后系统会继续处理其他的请求。在这种处理模式下,process.nextTick()的意思就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行。...11.Vue异步更新介绍一下 Vue的异步更新主要通过队列和微任务来实现。当Vue检测到数据变化时,它会开启一个队列,并将所有在同一事件循环中发生的变更推入队列。...事件循环: 事件循环的工作原理可以简述为:当JavaScript代码执行时,如果遇到异步操作(如setTimeout、ajax请求等),这些操作会被移交给浏览器处理,同时JavaScript会继续执行后续代码...GPU进程:负责处理与图形渲染相关的任务,如3D CSS效果等。 网络进程:负责处理网络请求,如下载资源、发起ajax请求等。 插件进程:负责运行浏览器插件,如Flash等。
事实上,从JavaScript发起调用到内核执行完成I/O操作的过渡过程中,存在一种中间产物,称为请求对象。...以fs.open()为例,它的作用是根据请求路径和参数去打开一个文件,从而得到一个文件描述符,这是后续所有I/O的初始操作。...从JavaScript层传入的参数和当前方法都被封装在这个请求对象上,最关注的回调函数则被设置在这个对象的oncomplete_sym属性上。...对象包装完毕后,在windows下,则调用QueueUserWorkItem()方法将这个FSReqWrap对象推入线程池中等待执行。...在行为上,process.nextTick()在每次循环中会将数组中的回调函数全部执行完,而setImmediate()在每轮循环中执行链表中的一个回调函数。
堆内存空间:里边放引用类型的变量值,比如对象、数组 栈内存空间:里边放基本类型的变量值,比如字符串、数字。另外还存放引用类型变量名以及指向堆空间引用类型值存放地址的指针。...从栈顶推入,从栈顶拿出。 执行栈作用:用于存储代码执行期间创建的所有执行上下文。 js代码首次运行时,执行栈中被推入一个全局(global)执行上下文, 后期js按照代码顺序执行同步代码。...正确的处理方法就是把他拉到一边检查,让出安检口好让后边的人先顺利通过。) 代码也是这个道理,前边等待的代码需要先给后边的代码让路,要让其先执行。自己先挂起。...http网络请求请求 比如:ajax请求等 定时触发器 比如:setTimeout和setInteval ?...非阻塞js(non-blocking javascript) js文件在浏览器中的加载顺序 2018-12-12 19:37:36 js阻塞浏览器的某些处理过程:http请求、界面刷新 性能优化:js
两个函数: JSON.parse(str) 解析JSON字符串 把JSON字符串变成JavaScript值或对象 JSON.stringify(obj) 将一个JavaScript值(对象或者数组)转换为一个...$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用JSONP的回调函数。...(如何动态加载的?如何避免多次加载的?如何缓存的?) 核心是js的加载模块,通过正则匹配模块以及模块的依赖关系,保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存。...因为cookie有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中就不会带有cookie数据,这样可以降低请求头的大小,降低请求时间,从而达到降低整体请求延时的目的。...(1)通过location.hash记录状态,让浏览器记录Ajax请求时页面状态的变化。 (2)通过HTML5的history.pushstate,来实现浏览器地址栏的无刷新改变。 本文完
jQuery核心:Ajax jQuery还对Ajax进行了封装了,我们可以非常方便地发送一个Ajax请求,并对响应进行处理。...,如果服务器返回的是JSON格式数据,jQuery会将其转为对应的JS对象 // 假设data为{ msg: "Ajax请求成功", uid: 2 } alert( data.msg...); } }); $.ajax()是是jQuery中Ajax的底层实现,其它Ajax请求方法都是基于该方法实现的。...// 以GET方式发送Ajax请求 $.get("ajax.php", { username: "hello", password: "123456" }, function(data){...// 这是Ajax请求成功后执行的回调函数,就是上面$.ajax中的success选项 }); // 以POST方式发送Ajax请求 $.post("ajax.php", {
按照要求: 实现 mergePromise 函数,把传进去的函数数组按顺序先后执行,并且把返回的数据先后放到数组 data 中。...ajax1 、ajax2、ajax3 都是函数,不过这些函数有一些特点,执行后都会会返回一个 新的promise实例。...这道题主要考察的是Promise 控制异步流程,我们要想办法,让这些函数,一个执行完之后,再执行下一个,代码如何实现呢?...// 保存数组中的函数执行后的结果 var data = []; // Promise.resolve方法调用时不带参数,直接返回一个resolved状态的 Promise 对象。...,并且将执行结果推入data数组,最后将更新的data返回,这样保证后面sequence调用then方法,如何后面的函数需要使用data只需要将函数改为带参数的函数。
而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。...这样页面的所有ajax都会执行这条语句就是不需要保存缓存记录。 35. 如何解决跨域问题?...列举几条 JavaScript 的基本代码规范 (1)不要在同一行声明多个变量 (2)如果你不知道数组的长度,使用 push (3)请使用 ===/!...) getElementById() //通过元素Id,唯一性 40. jquery中如何将数组转化为json字符串,然后再转化回来?...跟 async不同, defer scripts在整个文档里的script都被下载完才顺序执行。 46. JQuery一个对象可以同时绑定多个事件,这是如何实现的?
1.JSON 语法是 JavaScript 对象表示法语法的子集。...数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象 var obj = eval...='#']") 选取所有带有 href 值不等于 "#" 的元素。 $("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。...类:this.变量 (内部定义成员变量) 【js中的两种集成方式】 对象冒充:apply和call(把非对象方法的函数当做成员用,apply使用参数数组),可以实现多继承 原型链继承:类型原型...,或者通过ajax SPA单页面应用(页面切换快,seo差,首页加载慢)、MPA多页面应用(页面切换慢,seo好) 7.跨域请求 浏览器一般禁止网页,跨域请求其他域名的数据
如何区分: DOCTYPE声明\新增的结构元素\功能元素 29. 语义化的理解? 用正确的标签做正确的事情!...html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析; 在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的。...对于apply和call两者在作用上是相同的,即是调用一个对象的一个方法,以另一个对象替换当前对象。将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。...18、在Javascript中什么是伪数组?如何将伪数组转化为标准数组? 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。...核心是js的加载模块,通过正则匹配模块以及模块的依赖关系,保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存 39、让你自己设计实现一个requireJS,你会怎么做?
所以,为了避免复杂性,从一诞生,JavaScript就是单线程的,这已经是这门语言的核心特征,将来也不会改变 而单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个,但浏览器是多线程的...既然js是单线程的,那么他是如何是实现异步操作的?我们把这些任务称为:异步任务 同一段时间内可以做多个任务,例如 setTimeout setInterval ajax ......这里以Ajax为例: 我们先看写一段简单的后端代码 /** * * @authors 川川 (itclancode@163.com) * @ID suibichuanji * @weChatNum...,第一个参数req代表的是客户端请求对象,第二个参数代表服务器端所做出的响应对象 res.writeHead(200, { 'Content-Type': 'application...而写异步代码的好处,就是实现让程序可控,想让它按照我们的想要的结果进行输出,坏处显然就是不好理解,射出去的弓箭,又要绕回来.
堆 对象被分配在堆中,堆是一个用来表示一大块(通常是非结构化的)内存区域的计算机术语。...事件队列 上边我们讲到在 Javascript 中本质上是基于栈的形式去执行我们的代码,但是执行任务(比如上边的函数)是如何被推到栈中的呢。...这里我们就不得不提出事件队列的概念,所谓事件队列(Event Queue)正是负责将即将执行的函数发送到栈中进行处理,它循队列数据结构保证所有发送执行的正确顺序。...这也就意味着,我们对于 Dom 的操作如果放在微任务之中是会让 UI 线程进行一次少的绘制(更快的展示在用户视野中)。...Process.nextTick 所谓 Process.nextTick 方法是 NodeJs 事件环中一个非常重要的 API ,我们稍微回忆一下在浏览器中的时间环中 EventLoop 会清空当前 macro
领取专属 10元无门槛券
手把手带您无忧上云