Краткое изложение предварительного интервью доктора Ю в Пекине

Прием на работу

одна сторона

Интервьюер был очень любезен и даже не позволил мне представиться. Просто возьмите лист бумаги и начните писать вопросы, на которые я буду отвечать.
Первый вопрос (сравнительно простой — проверить продвижение переменных и асинхронность)
var a = 10;
function A(){
    console.log(a);		//第一次输出undefined 
    //答案:函数内部变量a声明提升 值为undefined,找变量先找函数当前作用域的变量
    var a = 20;
    console.log(a);		//第二次输出:20   因为上面变量赋值为20
    for(var a=1;a<5;a++){
    	setTimeout(function(){
    		console.log(a);	//第四次输出4个5   
    		//答案:因为定时器是异步的  异步代码会扔到任务队列上。
    		先让主线程代码执行。
    		等任务队列通知可以执行才会扔到主线程执行定时器。
    		所以当定时器在执行的时候 for里面的a已经为5了
    	},0)
    }
}
A();
console.log(a);		//第三次输出  10



=========================我觉得可以提高一下难度=====================

//各位同学猜猜答案 最好输出一下顺序 顺序一定要对

console.log(a);                         //输出什么?
var a = "10";
console.log(a);                         //输出什么
function A(a){
    console.log(a);	                //输出什么?
    var a = "20";
    console.log(a);	                //输出什么?
    arguments[0]  = "40";
    console.log(a);                     //输出什么?
    for(var a=1;a<5;a++){
    	setTimeout(function(){
	    console.log(new Date+a);    //输出什么?
    	},1000)
    }
    console.log(new Date+a);            //输出什么?
}
A("30");
console.log(a);	                        //输出什么?


Второй вопрос (этот пункт слишком простой, если вы читали интересные вопросы фронтенд-интервью, этот вопрос очень легкий)
var obj = {
    showFunction:function(){
    }
}
obj.showFunction()  //this指向谁  obj
var newObj = obj.showFunction;
newObj()           //this指向谁    window


//随后粹不及防的问了我一下在js严格模式下 newObj()指向谁
忘了当时怎么说的了,因为我没有测试过。
回来查了一下,严格模式下this不会自动转换成window,默认为undefined。

Третий вопрос это несколько пунктов
Обычно это относится к объекту. Так что прямой вызов общих функций и переменных — это то, на кого this указывает, если это объект.
  • 1: Вызов напрямую глобально или через окно, этот вызов указывает на окно
var a = 10;
window.a;  == 10;
this.a     == 10;
a          == 10;
  • 2: Это указывает на текущий вызываемый объект в объектном вызове.
var obj = {
    showFunction:function(){
        this == obj
    }
}
  • 3: это указывает на элемент dom, к которому привязано событие
document.querySelector("#id").onclick =function(){
    this == document.querySelector("#id")
}
  • 4: this в конструкторе указывает на созданный объект
function Person(){
    this.name = "宋伟老师" 
    //这里面的this会在new调用函数的指向隐式创建的对象 
    并隐式返回出来
}
var man = new Person();

  • 5: При вызове, применении и привязке перейдите к этому указателю в теле функции
var obj = {
    names : "宋伟老师"
}
var names ="万达老师";
function fun(){
    console.log(this.names);
}

fun.call(obj);      //"宋伟老师"
fun.apply(obj);     //"宋伟老师"
fun.bind(obj)();    //"宋伟老师"

добавить немного знаний

Какими способами можно вызвать функцию
function fun(){}

//直接函数调用
1: fun();        
//new操作符调用,唯一不同 这样调用函数会把函数体内this指向变成隐式生成的空对象的不是window的了 
2: new fun();  

//可以自己试一试玩玩
var names = "宋伟老师"
function fun(){  console.log(this.names) };
new fun();   //输出什么?

//call方法 其实是fun() 在隐式调用的过程fun.call(window)。
要不然函数直接调用的时候,里面this怎么会变成window的
3:fun.call(window);
//bind不用说 和apply不同就是传参数是数组传参
4:fun.apply(window);
//bind调用函数是返回一个函数体 需要再一次调用执行
5:fun.bind(window)();   

Вопрос 4 Что такое цепочка прототипов
1:js高级程序设计中说的是 当一个引用类型继承另一个引用类型的属性和方法时候就会产生一个原型连。

2:我说 原型链就是实例化和构造函数的原型的一种关联。主要用来保证变量的访问顺序。
Пятый вопрос — что такое закрытие (я буду ждать этот вопрос для интервью. Я подготовил так много статей о концепции закрытия. Я буду болтать с интервьюером одну за другой. Если вы действительно понимаете, эти 7 объяснений могут объяснить одним предложением)
1:有权访问另一个函数作用域中的变量函数。(js高级程序设计)
2: 函数体内的变量存在函数作用域内就是闭包. (JS权威指南)
3:函数闭包。闭包则是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念。(AO)”`(js语言精髓与编程实践)`
4:闭包就是能够读取其他函数内部变量的函数。
由于在javascript中,只有函数内部的子函数才能读取局部变量,
所以闭包可以理解成“定义在一个函数内部的函数“。(百度百科)
5:内部函数+外部函数的变量 会形成一个闭包。
6:有权访问另一个作用域的函数就是闭包。
7:闭包就是函数+执行环境的总称。
Вопрос 6 Что такое объем
一句概括。就是函数和变量的可访问范围。
作用域分为全局作用域  函数作用域和eval作用域。
Вопрос 7 Объясните блочную модель css. . . .
盒模型 : margin、padding、border、content

标准盒模型 
(盒模型的高宽度不算padding和border 对应css属性 box-sizing:content-box)
怪异盒模型
(高宽度算上padding和border 对应css属性 box-sizing:border-box)

Проблема Vue (вы можете взглянуть на вопрос интервью VUE, я объясню пост-время, я продолжу.)

  • 1: Идея реализации виртуального нижнего слоя DOM
  • 2: Идея двусторонней привязки данных
  • 3: Жизненный цикл vue

Две стороны (позже будет время продолжить)

Суммировать

Студенты, которые видят эти вопросы, если вы можете это сделать, ваши друзья в Пекине могут пойти в эту компанию, чтобы попробовать. Дайте вам немного уверенности. Дело в том, что интервьюер спросит вас, видит ли он вас.天上有几颗月亮。看你不顺眼 就是问你天上有几颗星星. Так что успокойтесь и пройдите еще несколько интервью. Что ж, прошло много времени с тех пор, как я впервые написал статью с таким количеством слов. Нужно выйти и сделать большую медицинскую помощь, чтобы расслабиться. Что дальше.