2、第二部分:进阶篇(30题)..pdfVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

-第⼆部分:进阶篇|FE-Interview

第⼆部分:进阶篇

⼀、JS

1谈谈变量提升

当执⾏JS代码时,会⽣成执⾏环境,只要代码不是写在函数中的,就是在

全局执⾏环境中,函数中的代码会产⽣函数执⾏环境,只此两种执⾏环境。

js

b()//callb

console.log(a)//undefined

vara'Helloworld'

functionb(){

console.log('callb')

}

想必以上的输出⼤家肯定都已经明⽩了,这是因为函数和变量提升的原因。通

常提升的解释是说将声明的代码移动到了顶部,这其实没有什么错误,便于⼤

家理解。但是更准确的解释应该是:在⽣成执⾏环境时,会有两个阶段。第⼀

个阶段是创建的阶段,JS解释器会找出需要提升的变量和函数,并且给他们

提前在内存中开辟好空间,函数的话会将整个函数存⼊内存中,变量只声明并

且赋值为undefined,所以在第⼆个阶段,也就是代码执⾏阶段,我们可以

直接提前使⽤

在提升的过程中,相同的函数会覆盖上⼀个函数,并且函数优先于变量提升

js

b()//callbsecond

functionb(){

console.log('callbfist')

}

functionb(){

blog.poetries.top/FE-Interview-Questions/improve/#⼀、js1/27

-第⼆部分:进阶篇|FE-Interview

console.log('callbsecond')

}

varb'Helloworld'

var会产⽣很多错误,所以在ES6中引⼊了let。let不能在声明前使

⽤,但是这并不是常说的let不会提升,let提升了,在第⼀阶段内存也

已经为他开辟好了空间,但是因为这个声明的特性导致了并不能在声明前使⽤

2bind、call、apply区别

call和apply都是为了解决改变this的指向。作⽤都是相同的,只是传参的⽅式

不同。

除了第⼀个参数外,call可以接收⼀个参数列表,apply只接受⼀个参数数组

js

leta{

value:1

}

functiongetValue(name,age){

console.log(name)

console.log(age)

console.log(this.value)

}

getValue.call(a,'yck','24')

getValue.apply(a,['yck','24'])

bind和其他两个

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档