Предварительное интервью в конце года-es6 резюме

опрос

Я только что закончил школу, чтобы пройти собеседование на стажировку с вопросом после собеседования на один год.Если ответ не очень хороший, пожалуйста, поправьте меня!

На главной странице также есть html/css, вопросы для собеседования по JavaScript, а также vue....постоянно обновляется
(Это непросто собрать, пожалуйста, поставьте лайк перед просмотром, чтобы выработать хорошую привычку~)

С момента выпуска ES6 его приветствовало большинство разработчиков. Его новые функции решают многие болевые точки в фактической разработке и постепенно превращают JavaScript в язык программирования, на котором можно разрабатывать крупномасштабные корпоративные приложения.Основываясь на этой технической среде, многие компании рассматривают ES6 как один из стандартов разработки, поэтому при наборе талантов , знание ES6 также будет проверено.

1. Разница между var let const

  • (1) Переменные, объявленные с помощью var, будут смонтированы в окне, а переменные, объявленные с помощью let и const, не будут:

var a = 100;
console.log(a,window.a);    // 100 100

let b = 10;
console.log(b,window.b);    // 10 undefined

const c = 1;
console.log(c,window.c);    // 1 undefined

(2) Существует продвижение переменных для переменных объявления var и нет продвижения переменных для let и const.

console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
var a = 100;
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
let b = 10;
console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
const c = 10;

(3).let и объявления const образуют область блока

if(1){
    var a = 100;
    let b = 10;
}

console.log(a); // 100
console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
if(1){

    var a = 100;
        
    const c = 1;
}
 console.log(a); // 100
 console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量

(4) В одной и той же области видимости let и const не могут объявлять переменные с одинаковыми именами, но var может

var a = 100;
console.log(a); // 100

var a = 10;
console.log(a); // 10
let a = 100;
let a = 10;

//  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。
  • (5) Временная мертвая зона

var a = 100;

if(1){
    a = 10;
    //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
    // 而这时,还未到声明时候,所以控制台Error:a is not defined
    let a = 1;
}
  • (6).const

1、一旦声明必须赋值,不能使用null占位。
*
*   2、声明后不能再修改
*
*   3、如果声明的是复合类型数据,可以修改其属性
*
* */

const a = 100; 

const list = [];
list[0] = 10;
console.log(list);  // [10]

const obj = {a:100};
obj.name = 'apple';
obj.a = 10000;
console.log(obj);  // {a:10000,name:'apple'}

2. Стрелочные функции

(1) Ключевое слово function не требуется для создания функции

  • es5 создать функцию
var aa = function() {}
  • es6 создать функцию
var aa = () => {}

(2) Функция может быть значительно сокращена

  • функция es5
var fn = function(a) {
  return a + 5
  }
  • Функция стрелки может быть сокращена как:
    var fn = a => a + 5;
  • Сокращенное правило:
    当函数所传参数只有一个时,可以去掉();        eg: (a) => {}   简写为:a => {}
    当函数体中只返回值,而没有其他操作时,可以去掉{};eg: (a, b) => {return a+b} 简写为:(a, b) => a+

(3) Когда требуется динамический контекст, нельзя использовать стрелочные функции, то есть обездвиживание этого.

    1、在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象;
    2、不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误;
    3、不能够使用arguments对象;
    4、不能使用yield命令;

3. Добавьте 4 часто используемых метода для массивов

(1) карта -- отображение

let arr=[66,59,80];
let result=arr.map(item => {
if(item >= 60){
  return "及格"
}else{
  return "不及格"
}
});
//result:["及格", "不及格", "及格"]

(2) уменьшить -- резюме

let arr = [12,69,180,8763];
let result = arr.reduce((tmp, item, index) => {
 console.log(tmp, item, index);
 return tmp + item;
 });
 console.log(result);//求和

(3) фильтр -- фильтр

let arr=[
    {title: '电源线', price: 50},
    {title: '电脑', price: 13000},
    {title: '键盘', price: 120},
    {title: '手机', price: 9000}
];
 
let result=arr.filter(json=>json.price>=5000);
 
console.log(result);//[{title: '电脑', price: 13000},{title: '手机', price: 9000}]

(4) forEach -- итерация


let arr=[12,5,8,9];
 
arr.forEach((item,index)=>{
   console.log(index+': '+item); //0: 12  1: 5  2: 8  3: 9
});

4. Параметры функции

(1) Соберите параметры

function show(a, b, ...args){
  console.log(args)
}
show(1,2,3,4,5,6) //输出[3,4,5,6]

(2) Развернуть массив

const arr1 = [1,2,3];
const arr2 = [4,5,6];
console.log([...arr1, ...arr2]); //输出[1,2,3,4,5,6]
console.log(...arr1); //输出1,2,3

(3) Значение по умолчанию

const show = (a=666, b=999) => {
  console.log(a); //输出666
  console.log(b); //输出999
}
 
show();

5. Деструктивное назначение

(1) Структура левой и правой сторон должна быть одинаковой;

(2) Правая сторона должна быть юридическим значением;

(3) Декларация и присвоение не могут быть разделены (должны быть завершены в одном предложении);

let [a,b,c]=[1,2,3,999];
let {e,d,g}={e: 4, d: 5, f: 6, g: 7};
console.log(a,b,c,e,d,g);
//输出1 2 3 4 5 7

6. Струны

(1) Есть два новых метода:startsWithendsWith


//startsWith
 
let str='https//http://mp.blog.csdn.net/postedit/79478118';
 
if(str.startsWith('http://')){
  alert('普通网址');
}else if(str.startsWith('https://')){
  alert('加密网址');
}else if(str.startsWith('git://')){
  alert('git地址');
}else if(str.startsWith('svn://')){
  alert('svn地址');
}else{
  alert('其他');
}

//endsWith
 
let str='12121.png';
 
if(str.endsWith('.txt')){
  alert('文本文件');
}else if(str.endsWith('.jpg')){
  alert('JPG图片');
}else{
  alert('其他');
  }

(2) Шаблон строки

Достоинства: простое сращивание нитей, можно наматывать.


let title='标题';
let content='内容';
let str='<div>\
  <h1>'+title+'</h1>\
  <p>'+content+'</p>\
</div>';
 
let str2=`<div>
  <h1>${title}</h1>
  <p>${content}</p>
</div>`;

7. Принцип выполнения обещания: три состояния обещания

Promise фактически разрешает область обратного вызова jquery ajax (разрешая уровни вложенности), что является просто решением для асинхронного программирования.

new promise(function(resolve,reject) {
   	// 111111111
   	resolve('...')
   } ).then(function(value) {
   	console.log(value)
   }).catch(function(error){
   console.log(error)
})
const p1 = new Promise(function (resolve, reject) {
  setTimeout(() => reject(new Error('fail')), 3000)
})

const p2 = new Promise(function (resolve, reject) {
  setTimeout(() => resolve(p1), 1000)
})

p2
  .then(result => console.log(result))
  .catch(error => console.log(error))

Три состояния: ожидание (в процессе), выполнено (успешно) и отклонено (не удалось)
Две характеристики обещания:
(1) Состояние объекта не зависит от внешнего мира
(2) Как только состояние изменится, оно больше не изменится, и этот результат можно получить в любой момент.

Недостатки промиса: промис нельзя отменить, если функция обратного вызова не установлена, внутри промиса будет выброшена ошибка
В-третьих, когда он находится в состоянии ожидания, невозможно узнать, на каком этапе он находится в данный момент (только что запущен или вот-вот завершится).

8. Знание es6

ECMAScript 6.0 (далее ES6) — это стандарт следующего поколения для языка JavaScript, официально выпущенный в июне 2015 года. Его цель — сделать так, чтобы язык JavaScript можно было использовать для написания сложных крупномасштабных приложений и чтобы он стал языком разработки корпоративного уровня.

напиши в конце

Так много резюме на данный момент и будет продолжать обновляться~

Собирать не просто, если вы считаете, что это полезно для вас, пожалуйста, поставьте лайк, подпишитесь и поддержите.
Коллекция всегда полезная, спасибо~