前端笔试题(01)

问题一、

难度系数: ★★★★
相关技术点:
  1). 引用变量赋值
  2). 内存分析
  3). 函数调用传参
  4). 运算符的优先级

预热1.




  
  01_百度





答案:2

前端笔试题(01)_第1张图片

预热2

// 预热二
  function fn1(a) {    //函数传递对象 a
    a.n = 3             // a 的 n属性赋值为3
  }
  fn1(obj)        // fn1接收 obj         
  console.log(obj.n)  // ?   obj 的 n属性

答案:n=3 (函数 a 将 n的值改为3)

前端笔试题(01)_第2张图片

预热3

// 预热三
  function fn2(a) {
    a = {n:4}      //将对象赋值给 a
  }
  fn2(obj)         fn2接收 obj(但并没有改变obj的值)    
  console.log(obj.n) // ?

答案:n=3(并没有改变obj的值)

前端笔试题(01)_第3张图片

正式题目

 var a = {n: 1}  //定义一个对象属性n=1赋值给变量 a
  var b = a  //将变量a 赋值给 变量b
  a.x = a = {n: 2}  //1.连续赋值从右向左 2.a.x的优先级比=更高,故向其中添加变量x

  console.log(a.n, b.n) // ? ?
  console.log(a.x, b.x) // ? ?

1.

前端笔试题(01)_第4张图片

 var a = {n: 1}  //定义一个对象属性n=1赋值给变量 a
  var b = a  //将变量a 赋值给 变量b
  a.x = a = {n: 2}  //1.连续赋值从右向左 2.a.x的优先级比=更高,故向其中添加变量x
                    //将对象n=2赋值给变量a

  console.log(a.n, b.n) // ? ?
  console.log(a.x, b.x) // ? ?

2.

前端笔试题(01)_第5张图片

 var a = {n: 1}  //定义一个对象属性n=1赋值给变量 a
  var b = a  //将变量a 赋值给 变量b
  a.x = a = {n: 2}  //1.连续赋值从右向左 2.a.x的优先级比=更高,故向其中添加变量x
                    //将对象n=2赋值给变量a
                    //再将a赋值给 a.x
  console.log(a.n, b.n) // ? ?
  console.log(a.x, b.x) // ? ?

3.

前端笔试题(01)_第6张图片

综上,可知  console.log(a.n, b.n) //  2  1

                    console.log(a.x, b.x) // undefined   2(对象)

问题二   

1. 难度系数: ★★★
2. 技术点:
  1). 作用域与作用域链
  2). 变量查找




  
  02_腾讯1





分析:

前端笔试题(01)_第7张图片

  console.log(x)   输出x,但在当前作用域里面并没有 x ,会沿着作用域链查找,即在全局作用域中查找,故输出10

 

问题三   

1. 难度系数: ★★★
2. 技术点:
  1). 作用域与作用域链
  2). 变量查找




  
  03_美团1





1.fn()  输出:

前端笔试题(01)_第8张图片   

 首先生成全局作用域,在定义函数后生成函数作用域,在函数作用域中去找变量fn ,先在当前作用域中找,但并没有;

然后沿着作用域链去外部找,在外部正好有fn,其值是函数对象,所以输出的就是这个函数

2.  obj.fn2() 输出

前端笔试题(01)_第9张图片

 首先生成全局作用域,在定义函数后生成函数作用域,在函数作用域中去找变量fn2 ,先在当前作用域中找,但并没有;

然后沿着作用域链去外部找,外部全局变量也没有fn2,故报错未定义fn2

3. obj.fn3() 输出

前端笔试题(01)_第10张图片

你可能感兴趣的:(前端,#,JS,面试)