成长(4/2000)——面试题合集1

2021-06-07  本文已影响0人  Kiki_Q

Javascript

1.作用域

概念:

作用域分全局作用域和函数作用域

预编译

js的两个阶段,预编译和解释执行。

解题方法

第一阶段,作用域的创建阶段,即预编译阶段,他做了哪些事情?

要点:在函数作用域的创建阶段会有一个变量对象,也称AO对象。这个对象我们无法访问,仅供js引擎自己去访问

1.创建AO对象
2.找形参和变量的声明,作为AO对象的属性名,值是undefined
3.实参和形参相统一
4.找函数声明,如果有变量名称相同,会覆盖变量的声明

实例演示

function fn(a,c) {
    console.log(a); //function a() { }
    var a = 123;
    console.log(a); //123
    console.log(c); //function c() { }
    function a() { }
    if(false) {   
        var d = 678;  //false不执行
    }
    console.log(d); //undefined
    console.log(b); //undefined
    var b = function () { }; //函数的表达式,非函数声明
    console.log(b); //function () { }
    function c() { } 
    console.log(c); //function c() { } 

}

fn(1, 2) 
// 解题思路

    //预编译阶段
    //a,c 形参
    AO = {
        a : undefined, //1 //function a() { }
        b : undefined,
        c : undefined, //2 //function c() { }
        d : undefined 
    }

    //解释执行阶段 (逐行执行)
1.

var a = 12
  function fn() {  
  console.log(a) 
   var a = 45;  
  console.log(a)  
}
fn()
2.
function fn() {  
  console.log(11)  
    function ff() {    
    console.log(22)  
  }  
  ff()
}
fn()
3.
function fn() { 
  console.log(5)  

  fn()  
}
fn()
4.
var a = 123;

  function fun() {
    alert(a);
  }
  fun();
5.
var a = 123;

  function fun() {
  alert(a);
  var a = 456;
  }
  fun();
alert(a);
6.
var a = 123;

  function fun(a) {
    alert(a);
    a = 456;
  }
  fun();
alert(a);
7.
var a = 123;

  function fun(a) {
      alert(a);
      a = 456;
}
fun(123);
alert(a);
8.
function test(a, b) {
  console.log(a);
  console.log(b);
  var b = 234;
  console.log(b);
  a = 123;
  console.log(a);

  function a() {}
  var a;
  b = 234;
  var b = function() {}
  console.log(a);
  console.log(b); 
}
test(1);
9.
function fn(a) {
  console.log(a);
  var a = 123;
  console.log(a);

function a() {}
console.log(a);
var b = function() {}
console.log(b);

function d() {}
}
fn(1);
10.
function fn() {  

  console.log(12)
}
var as = fn()

console.log(as)

11.
function fn() {  
console.log(12)  

return 45;  
console.log(456)  
}

fn()
12.
var a = 12; 
function fn() {  
console.log(a)  

return 4;  
var a = 45;
}

fn()
13.
var a = 100; 
function testResult() {  
  var b = 2 * a  
  var a = 200  
  var c = a / 2  

  alert(b)  

  alert(c)
}
testResult()
上一篇下一篇

猜你喜欢

热点阅读