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

岗厦网站建设天水头条最新消息今天

岗厦网站建设,天水头条最新消息今天,益阳网站建设益阳,大兴企业官网网站建设大家好#xff0c;最近想了想#xff0c;打算总结归纳一版前端八股文经卷#xff0c;给大家提供学习参考#xff0c;如果帮助到大家#xff0c;请大家#xff0c;一键三连支持一下#xff0c;你们的支持会激励我更加努力的更新更多有用的知识#xff0c;博主先在这里谢…大家好最近想了想打算总结归纳一版前端八股文经卷给大家提供学习参考如果帮助到大家请大家一键三连支持一下你们的支持会激励我更加努力的更新更多有用的知识博主先在这里谢谢大家 目录JavaScript部分1.JavaScript 有哪些数据类型它们的区别2.数据类型检测的方式有哪些3.Null 和 undefined 有什么区别4.如何获取安全的 undefined 值5.Object.is() 与比较操作符 “” 和“ ”的区别6. 谈谈什么是 JavaScript 中的包装类型7.为什么会有 BigInt类型 的提案8.如何判断一个对象是空对象9.const 声明的值能否被修改10.是否可以new 一个箭头函数如果 new 一个箭头函数的会怎么样11.箭头函数的 this 指向哪⾥12.说说扩展运算符 “...” 的作用及使用场景13.谈谈对 JSON 的理解14.JavaScript 脚本延迟加载的方式有哪些15.说说什么是 DOM 和 BOM16.聊聊 什么是函数尾调用使用尾调用有什么好处JavaScript部分 1.JavaScript 有哪些数据类型它们的区别 答 共有 8种数据类型 分别是1Undefined2Null3Object4Boolean5Number6 String7Symbol 8BigInt。 其中 Symbol 和 BigInt 是 ES6 中新增的数据类型 ●Symbol 代表创建后独一无二且不可变的数据类型它主要是为了 解决可能出现的全局变量冲突的问题。 ●BigInt 是一种数字类型的数据它可以表示任意精度格式的整数 使用 BigInt 可以安全地存储和操作大整数即使这个数已经超出了 Number 能够表示的安全整数范围。 这些数据可以分为基本数据类型和引用数据类型 ●栈基本数据类型Undefined、Null、Boolean、Number、String ●堆引用数据类型对象、数组和函数 两种类型的区别在于存储位置的不同 两种类型的区别在于存储位置的不同 ●原始数据类型直接存储在栈stack中的简单数据段占据空间 小、大小固定属于被频繁使用数据所以放入栈中存储 ●引用数据类型存储在堆heap中的对象占据空间大、大小不固 定。如果存储在栈中将会影响程序运行的性能引用数据类型在栈 中存储了指针该指针指向堆中该实体的起始地址。当解释器寻找引 用值时会首先检索其在栈中的地址取得地址后从堆中获得实体。 堆和栈的概念存在于数据结构和操作系统内存中在数据结构中 ●在数据结构中栈中数据的存取方式为先进后出。 ●堆是一个优先队列是按优先级来进行排序的优先级可以按照大 小来规定。 在操作系统中内存被分为栈区和堆区 ●栈区内存由编译器自动分配释放存放函数的参数值局部变量的 值等。其操作方式类似于数据结构中的栈。 ●堆区内存一般由开发着分配释放若开发者不释放程序结束时可 能由垃圾回收机制回收。 2.数据类型检测的方式有哪些 答1typeof 其中数组、对象、null 都会被判断为 object其他判断都正确。常用来判断基本数据类型其中 判断Null为Object 是js历史遗留问题。 答2instanceof instanceof 可以正确判断对象的类型其内部运行机制是判断在其 原型链中能否找到该类型的原型。 可以看到instanceof 只能正确判断引用数据类型而不能判断基 本数据类型。instanceof 运算符可以用来测试一个对象在其原型链 中是否存在一个构造函数的 prototype 属性。 答3constructor constructor 有两个作用一是判断数据的类型二是对象实例通过 constrcutor 对象访问它的构造函数。需要注意如果创建一个对象 来改变它的原型constructor 就不能用来判断数据类型了如下 答4Object.prototype.toString.call() Object.prototype.toString.call() 使用 Object 对象的原型方法 toString 来判断数据类型。 同样是检测对象 obj 调用 toString 方法obj.toString()的结果和 Object.prototype.toString.call(obj)的结果不一样这是为什 么这是因为 toString 是 Object 的原型方法而 Array、function 等类 型作为 Object 的实例都重写了 toString 方法。不同的对象类型调 用 toString 方法时根据原型链的知识调用的是对应的重写之后的 toString 方法function 类型返回内容为函数体的字符串Array 类型返回元素组成的字符串…而不会去调用 Object 上原型 toString 方法返回对象的具体类型所以采用 obj.toString() 不能得到其对象类型只能将 obj 转换为字符串类型因此在想要 得到对象的具体类型时应该调用 Object 原型上的 toString 方法。 3.Null 和 undefined 有什么区别 答 首先 Undefined 和 Null 都是基本数据类型这两个基本数据类型 分别都只有一个值就是 undefined 和 null。 undefined 代表的含义是未定义null 代表的含义是空对象。一般 变量声明了但还没有定义的时候会返回 undefined null 主要用于 赋值给一些可能会返回对象的变量作为初始化。 undefined 在 JavaScript 中不是一个保留字这意味着可以使用 undefined 来作为一个变量名但是这样的做法是非常危险的它会 影响对 undefined 值的判断。我们可以通过一些方法获得安全的 undefined 值比如说 void 0。 当对这两种类型使用 typeof 进行判断时Null 类型化会返回 “object”这是一个历史遗留的问题。当使用双等号对两种类型的 值进行比较时会返回 true使用三个等号时会返回 false。 4.如何获取安全的 undefined 值 答 因为 undefined 是一个标识符所以可以被当作变量来使用和赋值 但是这样会影响 undefined 的正常判断。表达式 void ___ 没有返 回值因此返回结果是 undefined。void 并不改变表达式的结果 只是让表达式不返回值。因此可以用 void 0 来获得 undefined。 5.Object.is() 与比较操作符 “” 和“ ”的区别 答 使用双等号 进行相等判断时如果两边的类型不一致则会进 行强制类型转化后再进行比较。 使用三等号 进行相等判断时如果两边的类型不一致时不会做强制类型准换直接返回 false。 使用 Object.is 来进行相等判断时一般情况下和三等号的判断相 同它处理了一些特殊的情况比如 -0 和 0 不再相等两个 NaN 是相等的。 6. 谈谈什么是 JavaScript 中的包装类型 答 在 JavaScript 中基本类型是没有属性和方法的但是为了便于操 作基本类型的值在调用基本类型的属性或方法时 JavaScript 会在 后台隐式地将基本类型的值转换为对象如 在 访 问 ‘abcdef’.length 时 JavaScript 将 ‘abc’ 在 后 台 转 换 成 String(‘abcdef’)然后再访问其 length 属性。 JavaScript 也可以使用 Object 函数显式地将基本类型转换为包装类 型 也可以使用 valueOf 方法将包装类型倒转成基本类型 7.为什么会有 BigInt类型 的提案 答 JavaScript 中 Number.MAX_SAFE_INTEGER 表示最⼤安全数字计算 结果是 9007199254740991即在这个数范围内不会出现精度丢失⼩ 数除外。但是⼀旦超过这个范围js 就会出现计算不准确的情况 这在⼤数计算的时候不得不依靠⼀些第三⽅库进⾏解决因此官⽅提 出了 BigInt 来解决此问题。 8.如何判断一个对象是空对象 答 let obj {};if (JSON.stringify(obj) {}) { //JSON方法console.log(obj是空对象);}if (Object.keys(obj).length 1) { //Object 方法console.log(obj是空对象);}9.const 声明的值能否被修改 答 const 保证的并不是变量的值不能改动而是变量指向的那个内存地 址不能改动。对于基本类型的数据数值、字符串、布尔值其值 就保存在变量指向的那个内存地址因此等同于常量。 但对于引用类型的数据主要是对象和数组来说变量指向数据的 内存地址保存的只是一个指针const 只能保证这个指针是固定不 变的至于它指向的数据结构是不是可变的就完全不能控制了。 10.是否可以new 一个箭头函数如果 new 一个箭头函数的会怎么样 答 不可以。 箭头函数是ES6中的提出来的它没有prototype也没有自己的this 指向更不可以使用 arguments 参数所以不能 New 一个箭头函数。 new 操作符的实现步骤如下 1.创建一个对象 。 2.将构造函数的作用域赋给新对象也就是将对象的__proto__属性 指向构造函数的 prototype 属性。 3.指向构造函数中的代码构造函数中的 this 指向该对象也就是 为这个对象添加属性和方法 4.返回新的对象 。 所以上面的第二、三步箭头函数都是没有办法执行的。 11.箭头函数的 this 指向哪⾥ 答 箭头函数不同于传统 JavaScript 中的函数箭头函数并没有属于⾃ ⼰的 this它所谓的 this 是捕获其所在上下⽂的 this 值作为⾃ ⼰的 this 值并且由于没有属于⾃⼰的 this所以是不会被 new 调⽤的这个所谓的 this 也不会被改变。 12.说说扩展运算符 “…” 的作用及使用场景 答 扩展运算符使用场景分为 对象扩展运算符 和 数组扩展运算符 1对象扩展运算符 对象的扩展运算符(…)用于取出参数对象中的所有可遍历属性拷 贝到当前对象之中。 上述方法等同于原生 Object.assign 方法用于对象的合并将源对象source的所有可 枚举属性复制到目标对象target。Object.assign 方法的第一 个参数是目标对象后面的参数都是源对象。(如果目标对象与源对 象有同名属性或多个源对象有同名属性则后面的属性会覆盖前面 的属性)。 同样如果用户自定义的属性放在扩展运算符后面则扩展运算符 内部的同名属性会被覆盖掉。如下 利用上述特性就可以很方便的修改对象的部分属性。这也是为什么在 redux 中的 reducer 函数规定必须是一个纯函数reducer 中的 state 对象要求 不能直接修改可以通过扩展运算符把修改路径的对象都复制一遍 然后产生一个新的对象返回。 不过这里需要注意的是扩展运算符对对象实例的拷贝属于浅拷贝。了解深浅拷贝 2数组扩展运算符 数组的扩展运算符可以将一个数组转为用逗号分隔的参数序列且每 次只能展开一层数组。 数组中常应用 //将数组转换为参数序列为函数传参let arr [1, 2];function fn(x, y) {return x y;}let data fn(...arr);console.log(data); //3//同样也能复制数组let arr [1, 2];let str [...arr]; //[1, 2]要记住扩展运算符(…)用于取出参数对象中的所有可遍历属性拷 贝到当前对象之中这里参数对象是个数组数组里面的所有对象都 是基础数据类型将所有基础数据类型重新拷贝到新的数组中。 合并数组 扩展运算符与解构赋值结合起来用于生成数组 需要注意如果将扩展运算符用于数组赋值只能放在参数的最后一 位否则会报错。 字符串数组转成真实数组 任何 Iterator 接口的对象都可以用扩展运算符转为真正的数组 还可以在使用 Math 函数获取数组中特定的值 13.谈谈对 JSON 的理解 答 JSON 是一种基于文本的轻量级的数据交换格式。它可以被任何的编程语言读取和作为数据格式来传递。在项目开发中使用 JSON 作为前后端数据交换的方式。在前端通过将一个符合 JSON 格式的数据结构序列化为JSON 字符串然后将它传递到后端后端通过 JSON 格式的字符串解析后生成对应的数据结构以此来实现前后端数据的一个传递。 因为 JSON 的语法是基于 js 的因此很容易将 JSON 和 js 中的对象弄混但是应该注意的是 JSON 和 js 中的对象不是一回事JSON中对象格式更加严格比如说在 JSON 中属性值不能为函数不能出现 NaN 这样的属性值等因此大多数的 js 对象是不符合 JSON 对象的格式的。 在 js 中提供了两个函数来实现 js 数据结构和 JSON 格式的转换处理JSON.stringify 函数通过传入一个符合 JSON 格式的数据结构将其转换为一个 JSON 字符串。如果传入的数据结构不符合 JSON 格式那么在序列化的时候会对这些值进行对应的特殊处理使其符合规范。在前端向后端发送数据时可以调用这个函数将数据对象转化 为 JSON 格式的字符串。 JSON.parse() 函数这个函数用来将 JSON 格式的字符串转换为一个 js 数据结构如果传入的字符串不是标准的 JSON 格式的字符串的话将会抛出错误。当从后端接收到 JSON 格式的字符串时可以通过这个方法来将其解析为一个 js 数据结构以此来进行数据的访问。 14.JavaScript 脚本延迟加载的方式有哪些 答 延迟加载就是等页面加载完成之后再加载 JavaScript 文件。js 延 迟加载有助于提高页面加载速度。 defer 属性给 js 脚本添加 defer 属性这个属性会让脚本的加 载与文档的解析同步解析然后在文档解析完成后再执行这个脚本文 件这样的话就能使页面的渲染不被阻塞。多个设置了 defer 属性的脚本按规范来说最后是顺序执行的但是在一些浏览器中可能不是 这样。 async 属性给 js 脚本添加 async 属性这个属性会使脚本异步 加载不会阻塞页面的解析过程但是当脚本加载完成后立即执行 js 脚本这个时候如果文档没有解析完成的话同样会阻塞。多个 async 属性的脚本的执行顺序是不可预测的一般不会按照代码的顺序依次 执行。 动态创建 DOM 方式动态创建 DOM 标签的方式可以对文档的加载 事件进行监听当文档加载完成后再动态的创建 script 标签来引入 js 脚本。 使用 setTimeout 延迟方法设置一个定时器来延迟加载 js 脚本文 件让 JS 最后加载将 js 脚本放在文档的底部来使 js 脚本尽可能 的在最后来加载执行。 15.说说什么是 DOM 和 BOM 答 DOM 指的是文档对象模型它指的是把文档当做一个对象这个对象 主要定义了处理网页内容的方法和接口。 BOM 指的是浏览器对象模型它指的是把浏览器当做一个对象来对待 这个对象主要定义了与浏览器进行交互的法和接口。BOM 的核心是 window而 window 对象具有双重角色它既是通过 js 访问浏览器 窗口的一个接口又是一个 Global全局对象。这意味着在网页 中定义的任何对象变量和函数都作为全局对象的一个属性或者方 法存在。window 对象含有 location 对象、navigator 对象、screen对象等子对象并且 DOM 的最根本的对象 document 对象也是 BOM 的 window 对象的子对象。 16.聊聊 什么是函数尾调用使用尾调用有什么好处 尾调用指的是函数的最后一步调用另一个函数。代码执行是基于执行 栈的所以当在一个函数里调用另一个函数时会保留当前的执行上 下文然后再新建另外一个执行上下文加入栈中。使用尾调用的话 因为已经是函数的最后一步所以这时可以不必再保留当前的执行上 下文从而节省了内存这就是尾调用优化。但是 ES6 的尾调用优 化只在严格模式下开启正常模式是无效的。
文章转载自:
http://www.morning.zhengdaotang.cn.gov.cn.zhengdaotang.cn
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.xckqs.cn.gov.cn.xckqs.cn
http://www.morning.sfwcb.cn.gov.cn.sfwcb.cn
http://www.morning.hnhsym.cn.gov.cn.hnhsym.cn
http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn
http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn
http://www.morning.rqkck.cn.gov.cn.rqkck.cn
http://www.morning.skrh.cn.gov.cn.skrh.cn
http://www.morning.lztrt.cn.gov.cn.lztrt.cn
http://www.morning.ktfbl.cn.gov.cn.ktfbl.cn
http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn
http://www.morning.fhsgw.cn.gov.cn.fhsgw.cn
http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn
http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn
http://www.morning.dmtld.cn.gov.cn.dmtld.cn
http://www.morning.rnrfs.cn.gov.cn.rnrfs.cn
http://www.morning.ttfh.cn.gov.cn.ttfh.cn
http://www.morning.txlnd.cn.gov.cn.txlnd.cn
http://www.morning.wrlqr.cn.gov.cn.wrlqr.cn
http://www.morning.stbfy.cn.gov.cn.stbfy.cn
http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn
http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn
http://www.morning.skmzm.cn.gov.cn.skmzm.cn
http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn
http://www.morning.rxfjg.cn.gov.cn.rxfjg.cn
http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn
http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn
http://www.morning.mrcpy.cn.gov.cn.mrcpy.cn
http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn
http://www.morning.gjlst.cn.gov.cn.gjlst.cn
http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn
http://www.morning.fkflc.cn.gov.cn.fkflc.cn
http://www.morning.kgkph.cn.gov.cn.kgkph.cn
http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn
http://www.morning.wkwds.cn.gov.cn.wkwds.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.gnwse.com.gov.cn.gnwse.com
http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn
http://www.morning.tqgx.cn.gov.cn.tqgx.cn
http://www.morning.sjqpm.cn.gov.cn.sjqpm.cn
http://www.morning.psyrz.cn.gov.cn.psyrz.cn
http://www.morning.rcntx.cn.gov.cn.rcntx.cn
http://www.morning.xxwl1.com.gov.cn.xxwl1.com
http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn
http://www.morning.rdfq.cn.gov.cn.rdfq.cn
http://www.morning.svrud.cn.gov.cn.svrud.cn
http://www.morning.mlcwl.cn.gov.cn.mlcwl.cn
http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn
http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn
http://www.morning.gpryk.cn.gov.cn.gpryk.cn
http://www.morning.mdmxf.cn.gov.cn.mdmxf.cn
http://www.morning.gwwky.cn.gov.cn.gwwky.cn
http://www.morning.xhftj.cn.gov.cn.xhftj.cn
http://www.morning.ccphj.cn.gov.cn.ccphj.cn
http://www.morning.ysrtj.cn.gov.cn.ysrtj.cn
http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn
http://www.morning.rttxx.cn.gov.cn.rttxx.cn
http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn
http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn
http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn
http://www.morning.gqbks.cn.gov.cn.gqbks.cn
http://www.morning.jqbpn.cn.gov.cn.jqbpn.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.juju8.cn.gov.cn.juju8.cn
http://www.morning.snrhg.cn.gov.cn.snrhg.cn
http://www.morning.ljngm.cn.gov.cn.ljngm.cn
http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn
http://www.morning.tcxk.cn.gov.cn.tcxk.cn
http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn
http://www.morning.hbjqn.cn.gov.cn.hbjqn.cn
http://www.morning.knpbr.cn.gov.cn.knpbr.cn
http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn
http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn
http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn
http://www.morning.xfwnk.cn.gov.cn.xfwnk.cn
http://www.morning.wpjst.cn.gov.cn.wpjst.cn
http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn
http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn
http://www.morning.hmqjj.cn.gov.cn.hmqjj.cn
http://www.tj-hxxt.cn/news/259661.html

相关文章:

  • 网站建设企业云市场Godaddy如何建设网站
  • 乐从网站建设太原网站优化
  • PHP是做网站最好的网页版梦幻西游踏青寻柳攻略
  • 简述网站规划的任务中国电力建设协会网站
  • 潍坊网站设计自己怎样免费建网站
  • 常用网站搜索引擎自己开网站需要什么
  • 松江网站建设公司怎么样开网店需要多少钱?
  • 十大黄冈网站排行榜深圳宝安建设工程交易中心
  • 邹城市住房和建设局网站母婴网站建设策划书
  • 农业局网站建设实施方案做网站不想用微软雅黑了
  • dede部署两个网站wordpress切换php版本
  • 网站建设项目汇报wordpress标点出现在行首
  • 四川平昌县建设局网站wordpress页面加轮播图
  • 企业模板建站公司wordpress文学
  • 商务网站制作公司wordpress 用户登录记录
  • 沈阳网站制作招聘网东莞网站建设规范
  • 广东上海专业网站建设公司网站备案截图
  • 企业网站托管一年多少钱网站项目建设方案
  • 摄影婚纱网站建设wordpress3.5.2下载
  • 网站开发 图片存放2017优惠券网站怎么做
  • 四惠网站建设山东建设企业网站
  • 佟年帮韩商言做网站是第几集大连企业网站模板建站
  • 做网站茶叶首页标题怎么写wordpress关闭评论框
  • 凡科网站自己如何做做跨境电商看国外的哪些网站
  • 网站维护难做模板wordpress演示站怎么做
  • 做外贸翻译用哪个网站好网站开发个人博客
  • 教育局网站群建设方案云服务器可以用来做网站么
  • 电子商务网站建设需要学什么软件多备份 wordpress
  • 菏泽网站设计培训网站一键提交
  • 忻州集团网站建设织梦的网站关键词