美文网首页
js经典面试题

js经典面试题

作者: 柠栀5102 | 来源:发表于2021-11-29 20:57 被阅读0次

    一、

    输出打印 undefined  \n  undefined  \n  12

    var 定义的变量 会自动提升值所在作用域的顶端,如下:

    二、

    输出打印undefinde \n  12 \n 13

    var变量提升后如下, 这个是时候其实只定义了一个全局变量a ,所以在fn()这个作用域中给 a 改变赋值  全局变量a 也是改变了的

    三、

    let 定义的变量是不存在提升的,并且,只要是当前作用域定义了该变量,那么就不能往上层寻找,所以上面两个输出打印都是报错的,如果删除前面两个输出,最后一个打印12

    四、

    这里的 a = 12 也是成立的,定义变量可以不使用任何关键字,但是在定义该变量之前,不能使用该变量(这是一种不规范写法)

    但是直接定义也不会存在定义变量名提升,所以第一个输出打印是报错的,第二个也是,let定义的变量不提升且当前作用域定义了a 所以报错

    五、

    输出打印:10  

    var定义的变量会提升到当前作用的最顶端,那么foo在执行if语句是就是undefined取非,执行foo = 10 ,如下:

    六、

    输出打印:1   因为这里bar()中的foo 没有重新用var定义所以 1 取非值是false,不执行foo = 10 的语句,当前作用域也没有重新定义 foo ,foo的值往上一层作用域找  值为1 

    七、

    输出打印:11 \n  12  \n  0

    这里需要注意的是  b()函数中使用的 n  ,是  a()函数这个作用域中定义的 n,  而最后一个输出打印使用的 n  是全局变量 所以输出打印 0

    八、

    输出打印 10 \n  11 \n  3

    九、

    输出打印:undefined

    十、

    输出打印:3 \n  10 \n  undefined

    如果调用函数中没有返回值  默认返回undefined

    十一、

    输出打印:5 \n  \n  6 \n  2

    a++ 先返回a的值,后加一;++a 先加一,在返回a的值;

    十二、

    输出打印:[0,2,3,4]  \n  [100]

    相关文章

      网友评论

          本文标题:js经典面试题

          本文链接:https://www.haomeiwen.com/subject/xcqlxrtx.html