范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

那些陌生又熟悉的前端面试题

  过完年需要跳槽的小伙伴还是挺多的,又要开始刷前端面试题了!会不会有一种错觉,看着这道面试题很熟,但是不知道该如何做?或者有答案又不知道是否正确?或者使用编辑器可以运行出来正确的答案,但是不知道怎么得来的,这些你都中招了吗?
  如果你也是这样,关注前端人,分享更多面试题、答案及知识点详解!1、严格模式与非严格模式的区别,你了解多少?
  JavaScript 语言是一门弱类型语言,存在许多类型错误,因此 ES6 引入了严格模式概念。
  如果不加 ‘use strict’ 常规模式下就是属于非严格模式。
  严格模式
  在 js 文件顶部添加 ‘use strict’ 就属于严格模式,严格模式也可以指定在函数内部。
  严格模式,是为 js 定义来了一种不同的解析与执行模型,在严格模式下,ECMAScipt 3 中一些不解和不确定的行为将得到处理,而且会对不安全的操作会抛出异常。‘use strict’ 会告诉浏览器引擎可以切换到严格模式执行。
  严格模式与非严格模式区别
  严格模式
  非严格模式
  变量必须声明才能赋值
  变量不进行声明,可直接赋值
  不能使用 delete 字符删除变量或对象
  可以使用 delete 删除
  函数参数变量名不允许重复
  变量名重复,获取最后最后那个值
  普通函数内的 this 为 undefined
  普通函数内的 this 为 window
  不允许使用八进制
  允许任意进制
  eval 和 arguments 当做关键字,不能被赋值和用作变量名
  可以使用 eval 、arguments 作为变量名
  call、apply 传入 null undefined 保持原样不被转为window
  默认转为 window 对象
  限制对调用栈的检测能力,访问 arguments.callee 会抛出异常
  arguments.callee 运行正常2、深浅拷贝的区别有哪些?
  常见笔试题:var person = {  name:"前端人",  hobby:["学习","敲代码","潜水"] } function copy(source){  var newObj = new Object()  for(var i in source){   if(source.hasOwnProperty(i)){    newObj[i] = source[i]    }   }  return newObj } var p1 = copy(person); p1.name = "Web Person" console.log(person.name) console.log(p1.name) p1.hobby = ["内卷"] console.info(person.hobby) console.info(p1.hobby) /*运行结果: 前端人  Web Person ["学习", "敲代码", "潜水"] ["内卷"] */
  试试这道笔试题你会做吗?
  要说 js 的深浅拷贝,就不得不提 js 的两大数据类型:基本数据类型和引用类型。
  基本数据类型的变量名和值都存储在栈中,对于引用类型的变量名存储在栈中,而值存储在堆中。由于存储方式不同,所以导致了他们复制的时候方式不同。
  赋值
  基本数据类型赋值的时候,创建的基本数据类型会在内存中开辟一个新空间把值复制过来,而引用类型采用的是地址存储,如果直接把一个引用数据直接赋值给另外一个数据,就相当于直接把自己存储值的地址给了另外一个变量,所以改变一个的值,也会改变另外一个的值。var a = 1; var b = a; b=2; console.log(a) //1 console.log(b)//2 var p1 = {name:"前端人"} var p2 = p1 p2.name = "打工仔" console.log(p1.name) // "打工仔" console.log(p2.name) // "打工仔"
  深浅拷贝是如何定义的?
  假设有 p 和 copyP 两个变量,如果copyP 是拷贝了 p 的,我们通过修改 copyP 来观察 p 是否发生改变,如果跟着改变,就是浅拷贝,如果是不改变,就说明是深拷贝。
  基本类型复制的时候会开辟新的内存空间,所以两个值是相互独立的,引用类型复制的时候就要看是复制的内存地址还是复制一个新的堆。所以深拷贝主要针对的是引用类型的数据。
  浅拷贝的常见的方式:
  1、直接赋值var arr1 = [1,2,3,4]; var arr2 = arr1;
  2、Object.assign var obj = {  a:1,  b:2 } var o = Object.assign(obj)
  深拷贝的常见方式:
  引用数据类型最常用的就是 Object 和 Array ,引用数据内部的数据也可以是多样化的,进行深拷贝时,也要适当地根据数据结构进行合适的复制方式,具体的深拷贝方法分别有:
  1、数组中只包含基本数据类型循环数组,将数组的值复制出来放入另一个新数组中利用 slice 方法借助 concat 方法利用 from 方法使用扩展符 ...
  2、对象中只包含基本数据类型利用 for in 循环,将对象的值拿出来使用 Object 复制给一个新的空对象使用 ... 扩展运算符手动复制,将属性值一个一个单独复制
  3、对象或数组里含有一层或多层引用数据类型时使用 jQuery 的 extend 方法JSON.parse(JSON.stringify())使用递归自己写一个深拷贝的方法
  深浅拷贝的常见应用主要是数据的增删改操作。3、this 的指向
  大厂笔试题:var name = "window name" var p1 = {  name:"p1 name",  showName:function(){   console.info(this.name)  } } var fn = p1.showName fn() p1.showName() var p2 = {  name:"p2 name",  showName:function(fun){   fun()  } } p2.showName(p1.showName) p2.showName = p1.showName p2.showName() /* 运行结果: window name  p1 name  window name  p2 name */
  这是一道关于 this 指向的面试题,接下来我们就说说 this 是如何指向的?
  this 对象是运行时基于函数的执行环境绑定的:在全局函数中,this 等于 window 。函数上下文调用,严格模式下 this 为 undefined ,非严格模式下,this 指向 window 。当函数被作为某个对象的方法被调用时,this 等于那个对象。如果使用 call apply 改变当前 this 时,将会指向为传递过来的那个 this 。匿名函数的执行环境具有全局性,因此 this 指向 window。构造函数内的 this 指向创建的实例对象。dom 事件处理函数,this 指向触发该事件的元素。setTimeout 和 setInterval 中的 this 指向全局变量 window
  看完上述 this 指向解释,你就可以做上边的那道面试题了。
  如何改变 this 的指向?
  call 、bind 和 apply 这三个函数都是用来改变 this 指向的,就是改变函数执行时的上下文。
  修改上述面试题:var name = "window name" var p1 = {  name:"p1 name",  showName:function(){   console.info(this.name) // p2 name  } } var p2 = {  name:"p2 name", } p1.showName.call(p2) p1.showName.apply(p2) var bind = p1.showName.bind(p2) bind()
  call 、bind 和 apply 改变 this 指向,最大作用就是实现代码复用。
  至于 call、bind 和 apply 的区别,可以自行去了解下。4、隐式转化console.log( "2">10 ) //false console.log( "2">"10" ) //true console.log( "abc">"b" ) //false console.log( "abc">"aab" ) //true console.log( undefined == null ) //true console.log( NaN == NaN )//false console.log( [] == 0 ) //true console.log( ![] == 0 ) //true console.log( [] == [] ) //false console.log( {} == {} ) //false console.log( {} == !{} ) //false
  对象的类型转换表
  有了上边那个表,事情就变得简单了!
  关系运算符进行运算时,不同类型的值会自动转化为相同类型值,然后进行
  1、两边有一个是字符串一个是是数字时,字符串调用 Number 方法,将字符串转为数字,所以:console.log( "2">10 )  => console.log( 2>10 )
  2、如果两边都是字符串时,按照字符串的 unicode 编码来转换的,所以:"2".charCodeAt() = 50 "10".charCodeAt() = 49 console.log( "2">"10" ) => console.log( 50 >49 )
  3、字符串进项比较时,先比较第一位,如果不相等直接得出结果,如果第一项相等,会继续使用第二项进行比较。console.log( "abc">"b" ) // a < b 所以为 false console.log( "abc">"aab" ) // a=a 第二位 b>a 所以为 true
  4、转为布尔值都为 false 的类型分别有:undefined 、null 、0、NaN、false、‘’console.log( undefined == null ) //true
  5、NaN表示的是非数字,但是这个非数字也是不同的,因此 NaN 不等于 NaN,两个NaN永远不可能相等。 console.log( NaN == NaN )//false
  6、关系运算有一个数值,将另外一个值也转为 number 类型。Number([].valueOf().toString()) = 0 console.log( [] == 0 ) => console.log( 0 == 0 ) //true
  7、有逻辑运算的,将其他数据类型转为 boolean 值。Boolean([]) = true => 取反 true console.log( ![] == 0 ) => console.log( false == false ) //true
  8、直接使用两个空数组比较,数组地址不同,所以不相等。console.log( [] == [] ) //false // 对象地址不一样 console.log( {} == {} ) //false{}.valueOf().toString() ="[object Object]" console.log( {} ==
  评论区可以留下最近你想学习的知识点,或面试题类型!

上市10天已卖了六千多辆,深圳首批吉利星越L的车主终于提车了新车上市9月26日,吉利汽车中国星系列的重磅SUV,星越L正式在深圳交车给盼望已久的首批订车用户,这款全新的SUV以超大的车身,豪华的配置以及同级超高的性价比吸引众多消费者的关注,深圳学院派00后,深三代们更爱新能源汽车,教育必须从娃娃抓起昨天参加了深圳职业技术学院汽车学院学生会和校友会举办的我的中国梦,汽车文化行天下的校内活动,有幸访问了几位新生代00后对汽车的见解,对深圳本土青年轻对新能源汽车以及汽车消费观有了一比亚迪全新元Pro深圳开趴!拼搏就是深圳女孩的标签深圳这座年轻的城市,聚集着全中国最优秀的年轻人,挣钱就是潮流的标签,最火的莫过于深圳女孩。她们走在了潮流前线,同时也是推动深圳经济快速增长的动力。爱拼搏爱挣钱,是深圳女孩的共同目标OPPO联合主办第四届CSRtech创新峰会以创新科技助力可持续发展2021年11月1日,上海由OPPO法国电信Orange德国电信Telekom及圣戈班联合主办的第四届CSRtech社会责任科技创新峰会在上海成功举办。峰会旨在通过科技创新助力可持比人类强大,聪明的外星人会吃人类吗?刘慈欣认为会知乎有人提问如果有比人类强大,聪明的外星人出现,会吃人类吗?因为我们人类会吃动物,就因为人类比动物高一个级别吗?老虎吃肉,是因为老虎没得选择,我们人类可以选择吃素食,为什么还要吃肉FindX2Pro上手体验超大底三摄,记录深圳历史一刻今年上半年,手机行业经历了一个神仙打架的局面,各厂商为了在5G开局阶段取得好的成绩,纷纷在旗舰机上堆料,带来了不少的好产品。其中,又以OPPOFindX2Pro最令人惊讶,它的屏幕搭建科研新平台!OPPO与清华大学达成合作,共同探索科技创新据了解,9月29日,OPPO广东移动通信有限公司携手清华大学,正式成立未来终端技术联合研究中心,将围绕人机交互技术认知计算计算机视觉计算摄像学方面的研究工作,与未来终端及可穿戴设备脑洞大开,塞那版雷克萨斯上市遐想雷克萨斯LM采用丰田埃尔法平台在日本生产,净车价为116。6万和146。6万,不算加价的费用,购置税及保险落地还需付出20万,订车后就进入漫长的等待期。做生意要有差异化产品,既然雷好久没有英菲尼迪新车消息,在这次粤港澳大湾区车展上实锤了自从英菲尼迪推出QX50后,一直没有新车上市,今年是英菲尼迪元年,终于有新车亮相,继4月上海车展后,于2021年深圳粤港澳大湾区车展上,英菲尼迪全新的QX55再次登场,也就是说离正全新奥迪Q5L家族亮相粤港澳大湾区车展,在B级豪华SUV中排第一中国是奥迪汽车全球最大单一市场,占比45以上,广东省又是中国排前三市场,其中A4L销量排第一位,A6L排第二位,Q5L排第三,在2021年粤港澳大湾区车展上,奥迪带来全新的Q5L家在新生代95后00后生活在最美好的时代,大叔也是这个时代的幸运儿我心里很高兴祖国的新生代生活在最幸福的时代,国泰民安,全民团结,国力蒸蒸日上,朝着中华民族伟大复兴道路稳步前行。大家的收入逐渐增加,对豪华汽车的需求越来越旺盛,作为最早进入中国市场
刘强东为何卸任京东CEO?4月7日,据微信公众号京东黑板报消息,京东集团宣布,京东集团总裁徐雷先生出任京东集团CEO,将负责日常运营管理,向京东集团董事局主席刘强东先生汇报刘强东先生将把更多精力投入到长期战Vue,组件,parent调用父组件childrenrefs调用子组件方法parentchildrenrefs直接调用子组件或者父组件的实例,直接调用数据可进行交互,而无法跨代通信,或者兄弟组件之间通信,这时候需要Vuex的解决方案。parent代码案例你在闲鱼捡过最大的漏是什么?我在19年10月份想换台华为mate20pro,在闲鱼上随便刷了一下,有个福建的卖家刚好挂了一台机子出来,9月27号买的,体验了几天就挂出来了,刚好又被我刷到了。当时这台机器还卖3极狐SHI版再次跳票拟6月交付北汽蓝谷实现10万辆目标尚未可知财联社(北京,记者刘阳)讯,一篇被删除的企业公众号文章暴露出了极狐ARCFOXSHI版(ASHI版)的再度跳票。4月7日,北汽蓝谷公众号上刊发题为梁耕龙让时间成为加分项文章,但随后4。10比特币试探高点,以太坊尝试破位?2022年4月6日至9日,全球最大的比特币会议比特币2022在美国迈阿密举行,吸引了超过3。5万与会者,其中包括全球众多政界人士加密企业金融大鳄技术精英和科技行业名流。有超过400数字货币人气龙头股深度分析,谁会是十倍大牛股?毫无疑问,2022年是数字经济的投资大年,堪比2021年的碳中和,其中新能源成为碳中和衍生出来的最强赛道,那么数字货币概念也有望成为数字经济战略的绝对主线。随着天津重庆杭州等城市成英特尔Arc显卡第二版驱动发布,修复DOTA卡顿延迟问题等IT之家4月10日消息,英特尔今天发布了其第二版WindowsDCHArc图形驱动程序,版本号为30。0。101。1330,修复了大量游戏的运行问题。该版本驱动的修复如下全面战争传易出评软件出评率怎样做了几年的电商,拼多多这几年崛起的很快,不过还是小部分在赚钱,以前的拼多多平台不限流,刷单已经非常普遍,供货需求量大,现在拼多多多次更改已经大不如前面好做了,但利率还是有很多,只是全球最先应用!中国电科球幕系统出海来源中国电科近日,中国电科14所南京洛普LED球幕系统成功应用于横滨柯尼卡美能达天文馆。这是继去年10月成功应用于名古屋柯尼卡美能达天文馆之后,再一次精彩亮相。目前,这两家天文馆是西门子前CEO全球化不可能终结,因为西方是100的受益者西门子前CEO乔凯瑟(JoeKaeser),在接受德国媒体采访时强调他不相信全球经济会去全球化,因为包括德国欧盟美国韩国和日本等这些西方发达经济体,都是全球化过程中100的受益者。六大算法岗搜广推NLPCV数据挖掘怎么选?很多同学向困哥咨询,开发岗和算法岗到底怎么选?算法岗中又怎么选择适合自己的研究方向和就业方向?前者我之前已经有过回答,可以看我主页的历史文章后者今天整理一份不同算法岗的介绍和个人建