腾讯js面试题2

傷城~ 2022-06-11 05:55 457阅读 0赞

本题难度系数: ★★★

考查技术点: 1). 变量提升 2). IIFE 3). 作用域与作用域链 4). 变量查找

  1. var name = 'World!'
  2. ;(function () {
  3. if (typeof name === 'undefined') {
  4. var name = 'Jack'
  5. console.log(name)
  6. } else {
  7. console.log(name)
  8. }
  9. })()

求结果是多少?

运行得知:

Center

接下来我们分析下,首先我们先来了解下,什么是IIFE,其实就是立即调用函数表达式,这4个字母分别为四个单词的首字母缩写(Immediately Invoked Function Expression)),就是让函数立即执行了。

当程序运行到函数时,会先执行变量提升步骤,也就是说把var name执行在if前面了,然后再执行if……else语句,所以if里面的条件就成立了,因为变量name被提升了,但并为赋值,所以当然他的typeof是undefined了啊。

此时等价于下面语句:

  1. var name = 'World!'
  2. ;(function () {
  3. var name;
  4. if (typeof name === 'undefined') {
  5. name = 'Jack'
  6. console.log(name)
  7. } else {
  8. console.log(name)
  9. }
  10. })()

然后再说下,一般不推荐在if里声明变量,为了养成后端相关语言的习惯,每个语句尽量加分号。因为这是一道面试题,所以才这样写,为了增加迷惑性,考查大家的分析能力。

发表评论

表情:
评论列表 (有 0 条评论,457人围观)

还没有评论,来说两句吧...

相关阅读

    相关 2022面试

    2022【京东】面试真题: 1、哪些情况下的对象会被垃圾回收机制处理掉? 利用可达性分析[算][Link 1][法][Link 1],虚拟机会将一些对象定义为GCRoots

    相关 Java面试

    免费版:[腾讯 JAVA 面试题][JAVA] 一不小心收到鹅厂的面试邀请,想着鹅厂也还可以,帅哥美女也多,就去面试了。 ![watermark_type_ZHJvaWR

    相关 js面试2

    本题难度系数: ★★★ 考查技术点:  1). 变量提升  2). IIFE 3). 作用域与作用域链 4). 变量查找 var name = 'World!

    相关 08年面试

    1.1000瓶药水,其中至多有1瓶剧毒,现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒(小狗服完药20小时后才能判断是否中毒) 答: 第一种: