当前位置: 首页 > news >正文

灯饰外贸网站建设玩偶网站最终目的

灯饰外贸网站,建设玩偶网站最终目的,公司请人做公司网站会计分录,本地装修公司怎么找什么是闭包#xff1f; 闭包的定义 闭包是指能够访问另一个函数作用域中的变量的一个函数。 在js中#xff0c;只有函数内部的子函数才能访问局部变量#xff0c; 所以闭包可以理解成 “定义在一个函数内部的函数”。 应用场景 将内部的函数返到外部去#xff0c;让外部…什么是闭包 闭包的定义 闭包是指能够访问另一个函数作用域中的变量的一个函数。 在js中只有函数内部的子函数才能访问局部变量 所以闭包可以理解成 “定义在一个函数内部的函数”。 应用场景 将内部的函数返到外部去让外部函数可以访问到内部函数的变量和方法 闭包的优点 延长外部函数局部变量的生命周期 闭包的缺点 优点也是缺点本应被销毁的变量因为闭包的原因没有被销毁长期存在的话容易造成内存泄漏 call apply bind 的作用与区别 作用 改变函数内部 this 的指向 区别 1、call 和 apply 会调用函数而 bind 不会调用 2、call 和 bind 的参数是 参数列表逐个传入而 apply 的参数必须为数组形式 应用场景 1、call 经常做继承 2、apply 经常跟数组有关系比如借用 Math 对象对数组进行处理 3、bind 不调用函数但是想改变 this 的指向比如改变定时器内部的 this 指向 原始值和引用值有什么区别 1、原始值大小固定保存在栈内存中从一个变量到另一个变量复制原始值会创建该值得第二个副本 2、引用值是对象存储在堆内存中包含引用值的变量实际上只包含指向相应对象的一个指针而不是对象本身 3、从一个变量到另一个变量复制引用值只会复制指针因此结果是两个变量都指向同一个对象 4、typeof操作费可以确定值的原始类型instanceof操作符用于确保值得引用类型 什么是作用域什么是作用域链 任何变量都存在于某个执行上下文中也称为作用域。这个上下文作用域决定了变量的生命周期以及它们可以访问代码的哪些部分。 1、执行上下文分为全局上下文、 函数上下文、 块级上下文 2、代码执行流每进入一个新上下文都会创建一个作用域链用于搜索变量和函数 3、函数或块的局部上下文不仅可以访问自己作用域内的变量也可以访问任何包含上下文乃至全局上下文的变量 4、全局上下文只能访问全局上下文中的变量和函数不能直接访问局部上下文中的任何数据 5、每个函数都有一个作用域链查找变量或方法时会先从函数作用域逐层查找最后到全局作用域查找这些作用域的集合称为作用域链。 解释一下JavaScript垃圾回收 **垃圾回收基本思路**确定那个变量不会再使用然后释放它占用的内存。这个过程是周期性的即垃圾回收程序每隔一定时间就会自动运行。 JavaScript是使用垃圾回收的编程语言开发者不需要操心内存分配和回收。 1、离开作用域的值会被自动标记为可回收然后在垃圾回收期间被删除 2、主流的垃圾回收算法是标记算法即先给当前不使用的值加上标记再回来回收它们的内存 3、引用计数是另一种垃圾回收策略需要记录值被引用了多少次。JavaScript引擎不再使用这种算法但某些旧版本的IE仍然会受这种算法的影响原因是JavaScript会访问非原生JavaScript对象如DOM对象。 4、引用计数在代码中循环引用时会出现问题 5、解除变量的引用不仅可以消除循环引用而且对垃圾回收也有帮助。为促进内存回收全局对象、全局对象的属性和循环引用都应该在不需要时解除引用。 Object和Map到底有什么区别 给定固定大小内存的情况下Map一般会比Object多存储50%的键值对。插入Map一般会稍微快一点。Map的删除性能完胜Object。 JavaScript的继承是通过什么方式实现的问法2什么是原型链问法3构造函数、原型、实例三者的关系 原型 所有的引用类型数组、函数、对象可以自由扩展属性除null以外。所有的引用类型都有一个’_ _ proto_ _属性(也叫隐式原型它是一个普通的对象)。所有的函数都有一个’prototype’属性(这也叫显式原型它也是一个普通的对象)。所有引用类型它的’_ _ proto_ _属性指向它的构造函数的’prototype’属性。当试图得到一个对象的属性时如果这个对象本身不存在这个属性那么就会去它的’_ _ proto_ _属性(也就是它的构造函数的’prototype’属性)中去寻找。 原型链 每个对象都有 proto 属性这个属性指向原型对象当想访问对象的一个属性时如果这个对象本身没有这个属性就会通过 __proto__属性 查找原型对象也是对象每个对象又有自己的 proto 属性所以就会一直这样查找上去直到找到这个属性这就是原型链的概念。原型链就是对象沿着 proto 这条链逐步向上搜索最顶层是 ObjectObject 的 proto 是 null。 总结 ECMA-262把原型链定义为ECMAScript的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。 每个构造函数都有一个原型对象原型有一个属性指回构造函数而实例有一个内部指针指向原型。如果原型是另一个类型的实例呢那就意味着这个原型本身有一个内部指针指向另一个原型相应地另一个原型也有一个指针指向另一个构造函数这样就在实例和原型之间构造了一条原型链。 对内存泄漏的了解 理解: 无用的内存还在占用得不到释放和归还比较严重的时候无用的内存还会增加从而导致整个系统卡顿甚至崩溃。 原因 意外的全局变量DOM元素清空时还存在引用闭包遗忘的定时器 new 操作符具体干了什么? 创建一个空对象并且把 this 指向这个对象同时还继承了该对象的原型属性和方法被加入到 this 引用的对象中 说说对浅拷贝 和 深拷贝的理解 浅拷贝 如果拷贝的是基本数据类型相当于直接拷贝它的值修改值互不影响 如果拷贝的是引用数据类型拷贝的就是指向堆内存里面这个对象的内存地址如果修改了其中一个对象的数据那么另一个对象也会受到影响因为内存地址指向堆里面同一块内存 常用 es6 0bject.assign() 实现 深拷贝 深拷贝是将一个对象完整的独立拷贝一份出来然后在堆内存中开辟一块新的内存块存储所以不会互相影响 常用 es6扩展运算符 递归 Array.concat() 实现 或者转为字符串再转为数组 你了解构造函数吗 ? class 是什么 ? 两者有什么区别 ? 在es5中构造函数其实就是在定义一个类可以实例化对象es6中class其实是构造函数的语法糖。但还是有点区别的 在class内部和class的方法内部默认使用严格模式class类不存在预解析也就是不能先调用class生成实例再定义class类但是构造函数可以。class中定义的方法默认不能被枚举也就是不能被遍历。class必须使用new执行但是构造函数没有new也可以执行。class中的所有方法都没有原型也就不能被newclass中继承可以继承静态方法但是构造函数的继承不能。 Promise是什么 Promise 是 es6 引入解决异步编程问题的解决方案Promise 有三种状态pending(进行中)、resolve(已完成)、reject(已失败)当 Promise 的状态由 pending 转变为 resolved 或 reject 时会执行相应的回调, 一旦从 pending 状态变成为其他状态就不能再更改状态了可以链式调用解决回调地狱的问题 Promsie 和 async/await 的区别和使用 ? 函数前面多了一个async关键字。await关键字只能用在async定义的函数内。async函数会隐式地返回一个promise该promise的reosolve值就是函数return的值。第1点暗示我们不能在 外层代码中使用await因为不在async函数内。使用 1.async和await是配对使用的await存在于async的内部。否则会报错 。 2.await表示在这里等待一个promise返回再接下来执行。 3.await后面跟着的应该是一个promise对象也可以不是如果不是接下来也没什么意义了… 什么是宏任务什么是微任务? 同步任务 同步任务是指在主线程上排队执行的任务 只有前一个任务执行完毕才能继续执行下一个任务。 异步任务 异步任务指的是不进入主线程、而进入任务队列的任务只有等主线程任务执行完毕任务队列的任务才会进入主线程执行。 异步任务分为 宏任务 和 微任务 宏任务 常见的宏任务settimeout setInterval script(最外层的script标签)会压入到调用栈中宏任务会等到调用栈清空之后再执行 微任务 常见的微任务promise (async await)会在调用栈清空时立即执行(优先级大于宏任务), 调用栈中加入的微任务会立马执行 总结 同一作用域微任务队列优先于宏任务队列执行微任务队列上创建的宏任务会被后添加到当前宏任务队列的尾端微任务队列中创建的微任务会被添加到微任务队列的尾端只要微任务队列中还有任务宏任务队列就只会等待微任务队列执行完毕后再执行 如何判断数据类型 ?他们的优缺点是什么 typeof 用来检测数据类型的运算符 检测的不管是数组还是正则都返回的是object,所以typeof不能判断一个值是否为数组 instanceof/constructor。检测某一个实例是否属于某一个类使用instanceof/constructor可以检测数组和正则 用instanceof检测的时候,只要当前的这个类在实例的原型链上(可以通过原型链__proto__找到它),检测出来的结果都是true。 基本数据类型的值是不能用instanceof来检测的 在类的原型继承中,instanceof检测出来的结果其实是不准确的 Object.prototype.toString.call(value) -找到Object原型上的toString方法,让方法执行,并且让方法中的this变为value(value-就是我们要检测数据类型的值)。检测的类型比较多也比较精准。 数组常用方法有那些 concat() 连接两个或更多的数组并返回结果。join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。pop() 删除并返回数组的最后一个元素。 shift() 删除并返回数组的第一个元素push() 向数组的末尾添加一个或更多元素并返回新的长度。unshift() 向数组的开头添加一个或更多元素并返回新的长度。reverse() 颠倒数组中元素的顺序。slice() 从某个已有的数组返回选定的元素sort() 对数组的元素进行排序splice() 删除元素并向数组添加新元素。toSource() 返回该对象的源代码。toString() 把数组转换为字符串并返回结果。toLocaleString() 把数组转换为本地数组并返回结果。valueOf() 返回数组对象的原始值 常用的es6语法有哪些 let、const 解构赋值 模板字符串 箭头函数 函数默认值 promise set、map结构 class类 symbol Iterator 和 for…of 循环. 数值的扩展方法 数组的扩展方法 正则的扩展方法 对象的扩展方法 讲一下 var、let、const 的区别? var 和 let/const 都是 JavaScript 中声明变量的关键字但是它们在作用域和变量提升方面有一些不同。 var 声明的变量存在变量提升在代码块执行前就已经存在并且值为 undefined。 let 和 const 声明的变量不存在变量提升在代码块执行前不存在并且在代码块内部作用域内有效。 let 声明的变量可以被重新赋值而 const 声明的变量不能被重新赋值。 const对象的属性可以修改吗 const保证的并不是变量的值不能改动而是变量指向的那个内存地址不能改动。对于基本类型的数据数值、字符串、布尔值其值就保存在变量指向的那个内存地址因此等同于常量。 但对于引用类型的数据主要是对象和数组来说变量指向数据的内存地址保存的只是一个指针const只能保证这个指针是固定不变的至于它指向的数据结构是不是可变的就完全不能控制了。 如果new一个箭头函数的会怎么样 箭头函数是ES6中的提出来的它没有prototype也没有自己的this指向更不可以使用arguments参数所以不能New一个箭头函数。 使用箭头函数应注意什么 1用了箭头函数this就不是指向window而是父级指向是可变的 2不能够使用arguments对象 3不能用作构造函数这就是说不能够使用new命令否则会抛出一个错误 4不可以使用yield命令因此箭头函数不能用作 Generator 函数
http://www.hkea.cn/news/14335257/

相关文章:

  • ai免费模板网站网络平台维护是什么工作
  • 郑州网站推广方式杭州建模培训
  • 自己建网站做代理商鞍山天乙网络推广有限公司
  • 网站手机端页面怎么做的平面设计一个月多少工资
  • 网站检测报告哪里做网站设计制做报价
  • 汕头快速优化排名网站制作优化
  • 宏福建设工程有限公司网站英雄联盟最新赛事
  • 建设校园网站意义小说网站建设多少钱
  • 推荐邵阳网站建设百度云wordpress怎么搭建网站
  • 县级门户网站建设的报告中端网站建设公司
  • 公司网站建设费用包括哪些慈溪网站建设哪家好
  • 网站建设分工表wordpress延迟加载插件
  • 乐辰科技网站建设百度做的网站 如果不做推广了 网站还保留吗
  • 域名转移影响网站访问吗wordpress404页面跳转到首页
  • 视频网站建站费用番禺外贸型网站建设
  • 深圳网站建设是哪个平面设计现在怎么样
  • 苏州企业如何建站代运营公司
  • 网站未备案wordpress代价网站建设
  • 如何对网站进行改版北京做网站推广兼职
  • 温州英文网站建设淘宝客网站开发视频
  • 如何将网站上传到万网主机本地网站搭建软件
  • 网站开发怎么挣外快qq企业邮箱登录入口
  • 河南网站制作工作室深圳公司建立网站
  • 网站前台显示数据库指定分类怎么做php开发助手
  • .net flash网站模板网站建设详细设计
  • 网站加入购物车的代码怎样在百度做网站表白
  • 怎么自己做网站挂到百度上专业微网站建设
  • 医疗手机网站建设手机搭建网站
  • 建站快车的应用场景aso是什么意思
  • 南靖企业网站建设公司做网站好赚钱