Вопросы для собеседования по новому методу ES6

1. пусть const var сравнение

  • Переменные, определенные с помощью let и const, не будут продвигаться, а переменные, определенные с помощью var, будут продвигаться.
  • let и const - области видимости на уровне блока в JS
  • let и const не допускают повторных объявлений (будут выданы ошибки)
  • Переменные, определенные let и const, вызовут ошибку, если используются до определения оператора (образуют временную мертвую зону), а var - нет.
  • const объявляет константу только для чтения. После объявления значение константы не может быть изменено (если объявление является объектом, то адрес ссылки объекта не может быть изменен)

2. Идентификация обратной кавычки (`)

Обозначается парой обратных кавычек (`), он может использоваться как обычная строка, он также может использоваться для определения многострочной строки, а также может встраивать переменные, выражения или функции js, переменные, выражения js или Функцию нужно записать в $ {}.

var str = `abc
def
gh`;
console.log(str);
let name = "小明";
function a() {
    
    
    return "ming";
}
console.log(`我的名字叫做${
      
      name},年龄${
      
      17+2}岁,性别${
      
      '男'},游戏ID:${
      
      a()}`);

3. Параметры функции по умолчанию

ES6 предоставляет для параметров значения по умолчанию. Этот параметр инициализируется при определении функции, поэтому его можно использовать, когда параметр не передан.

function A(a,b=1){
    
       
 console.log(a+b);
}
A(1);    //2
A(2+3);  //5

4. Функция стрелки

В es6 предоставляется краткий способ написания функций, который мы называем «стрелочными функциями».

Запись: имя функции = (формальный параметр) => {……} Если в теле функции есть только одно выражение, {} и return можно опустить, а когда в теле функции есть только один формальный параметр, () можно опустить.

Особенности: Эта функция в стрелке всегда указывает на ближайшую к ней функцию, когда функция стрелки была определена, и если ближайшей функции нет, она указывает на окно.

// Опускаем формулировку

var people = name => 'hello' + name;
 
var getFullName = (firstName, lastName) => {
    
    
    var fullName = firstName + lastName;
    return fullName;
} 

5. Сокращение атрибутов

  • Сокращение для атрибутов. ES6 позволяет записывать переменные прямо в объект. На данный момент имя атрибута - это имя переменной, а значение атрибута - это значение переменной.
var foo = 'bar';var baz = {
    
    foo};  //等同于  var baz = {foo: foo}

6. Сокращение метода

Сокращение для метода. Опустите двоеточие и ключевое слово функции.

var o = {
    
    
  method() {
    
    
    return "Hello!";
  }
};
 
// 等同于
var o = {
    
    
  method: function() {
    
    
    return "Hello!";
  }
};

7. Метод Object.keys (), получить все имена атрибутов или имена методов объекта.

  • Метод Object.keys () получает все имена свойств или имена методов объекта (не включая содержимое прототипа) и возвращает массив.
 var obj={
    
    name: "john", age: "21", getName: function () {
    
     alert(this.name)}};
console.log(Object.keys(obj));    // ["name", "age", "getName"]
console.log(Object.keys(obj).length);    //3
 
console.log(Object.keys(["aa", "bb", "cc"]));    //["0", "1", "2"]
console.log(Object.keys("abcdef"));    //["0", "1", "2", "3", "4", "5"]

8.Object.assign () Свойства и методы исходного объекта объединяются в целевой объект.

Object.assign () метод assign объединяет свойства и методы нескольких исходных объектов в целевой объект. Вы можете получить несколько параметров, первый параметр - это целевой объект, а следующие - исходные объекты.

var target  = {
    
    }; //目标对象
var source1 = {
    
    name : 'ming', age: '19'}; //源对象1
var source2 = {
    
    sex : '女'}; //源对象2
var source3 = {
    
    sex : '男'}; //源对象3,和source2中的对象有同名属性sex
Object.assign(target,source1,source2,source3);
 
console.log(target);    //{name : 'ming', age: '19', sex: '男'}

9. for ... of цикл

Это единый способ просмотра всех структур данных. Диапазон, который может использовать цикл for ... of, включает в себя массивы, структуры Set и Map, некоторые объекты, подобные массивам (например, объект arguments, объект DOM NodeList), объекты Generator и строки.

var arr=["小林","小吴","小佳"];
for(var v of arr){
    
    
    console.log(v);	
}
//小林 
//小吴 
//小佳

10. импорт и экспорт

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

export используется для вывода переменных интерфейса этого модуля (файл можно понимать как модуль).

Импорт используется для загрузки другого модуля с интерфейсом экспорта в один модуль.

Команды импорта и экспорта могут находиться только в верхней части модуля, но не в блоке кода.

//导入部分
//全部导入
import Person from './example'
 
//将整个模块所有导出内容当做单一对象,用as起别名
import * as example from "./example.js"
console.log(example.name)
console.log(example.getName())
 
//导入部分
import {
    
     name } from './example'
 
//导出部分
// 导出默认
export default App
 
// 部分导出
export class User extend Component {
    
    };

11. объект обещания

Promise - это решение для асинхронного программирования, которое выражает асинхронные операции в процессе синхронных операций, избегая вложенных функций обратного вызова.

У него есть три состояния: ожидающий выполнения, решенный-завершенный, отклоненный-неудачный.

Конструктор Promise содержит один параметр и обратный вызов с двумя параметрами: разрешить и отклонить. Выполните некоторые операции в обратном вызове (например, асинхронные), если все в порядке, вызовите разрешение, иначе вызовите отклонение. Вы можете вызвать метод обещания.then () для созданного объекта обещания, передав методы разрешения и отклонения в качестве обратных вызовов. Метод then () получает два параметра: onResolve и onReject, которые представляют успех или неудачу текущего объекта обещания.

var promise = new Promise((resolve, reject) => {
    
    
    var success = true;
    if (success) {
    
    
        resolve('成功');
    } else {
    
    
        reject('失败');
    }
}).then(
    (data) => {
    
     console.log(data)},
    (data) => {
    
     console.log(data)}
)

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

setTimeout(function() {
    
    
    console.log(0);
}, 0);
var promise = new Promise((resolve, reject) => {
    
    
    console.log(1);
    setTimeout(function () {
    
    
        var success = true;
        if (success) {
    
    
            resolve('成功');
        } else {
    
    
            reject('失败');
        }
    },2000);
}).then(
    (data) => {
    
     console.log(data)},
    (data) => {
    
     console.log(data)}
);
console.log(promise);	//<pending> 进行中
setTimeout(function () {
    
    
    console.log(promise);	//<resolved> 已完成
},2500);
console.log(2);
 
//1
//Promise {<pending>}
//2
//0
//成功
//Promise {<resolved>: undefined}

12. Деструктуризация задания

ES6 позволяет извлекать значения из массивов и объектов и присваивать значения переменным в соответствии с определенным шаблоном, который называется деструктуризацией.

  • Разрушение и присвоение массива

Значение в массиве будет автоматически преобразовано в переменную, соответствующую полученному значению. Деструктурирующее присвоение массива должно быть взаимно однозначным соответствием. Если соответствия нет, оно не определено.

var [name, pwd, sex]=["小周", "123456", "男"];
console.log(name) //小周
console.log(pwd)//123456
console.log(sex)//男
  • Назначение деструктуризации объекта

Существует важное различие между деструктуризацией объектов и массивами. Элементы массива расположены по порядку, а значение переменной определяется ее положением; свойства объекта не имеют порядка, и переменная должна иметь то же имя, что и свойство, чтобы получить правильное значение.

var obj={
    
    name:"小周", pwd:"123456", sex:"男"}
var {
    
    name, pwd, sex}=obj;
console.log(name) //小周
console.log(pwd)//123456
console.log(sex)//男
 

13. установить структуру данных (можно использовать для быстрой дедупликации)

Установить структуру данных, аналогичную массиву. Все данные уникальны и нет повторяющихся значений. Сам он конструктор.

Свойства и методы:

size Длина данных
add () добавляет значение и возвращает саму структуру Set.
delete () удаляет значение и возвращает логическое значение, указывающее, было ли удаление успешным.
has () находит фрагмент данных и возвращает логическое значение.
clear () Очистить все члены, возвращаемого значения нет.

var arr = [1,1,2,2,3];
var s = new Set(arr);
console.log(s);	//{1, 2, 3}
 
console.log(s.size);	//3
console.log(s.add(4));	//{1, 2, 3, 4}
console.log(s.delete(4));	//true
console.log(s.has(4));	//false
s.clear();

14. Оператор спреда Оператор спреда (...)

Преобразовать строку в массив

var str="abcd";
console.log([...str]) // ["a", "b", "c", "d"]

Преобразовать коллекцию в массив

var sets=new Set([1,2,3,4,5])
console.log([...sets]) // [1, 2, 3, 4, 5]

Слияние двух массивов

var a1=[1,2,3];
var a2=[4,5,6];
console.log([...a1,...a2]); //[1, 2, 3, 4, 5, 6]

В функции, используемой для замены параметра arguments, параметр
rest ... имя переменной

Остальной параметр - это массив, и после него больше не может быть параметров, иначе будет сообщено об ошибке.

function func(...args){
    
    
    console.log(args);//[1, 2, 3, 4]
}
func(1, 2, 3, 4);
 
function f(x, ...y) {
    
    
    console.log(x);
    console.log(y);
}
f('a', 'b', 'c');     //a 和 ["b","c"]
f('a')                //a 和 []
f()                   //undefined 和 []
 
  • Удалить определенные предметы
    //数组
    const number = [1,2,3,4,5]
    const [first, ...rest] = number
    console.log(rest) //2,3,4,5
    //对象
    const user = {
    
    
        username: 'lux',
        gender: 'female',
        age: 19,
        address: 'peking'
    }
    const {
    
     username, ...rest } = user
    console.log(rest) //{"address": "peking", "age": 19, "gender": "female"

15. Новый строковый метод

// 1. includes () возвращает логическое значение: указывает, найден ли символ параметра

      let str = 'hahay'
      console.log(str.includes('y')) // true

// 2. repeat (): повторяем строку n раз

      let s = 'he'
      console.log(s.repeat(3)) // 'hehehe'

// 3. startWith () возвращает логическое значение: находится ли строка параметров в начале исходной строки

      console.log("lxy".startsWith('l'));//true
      console.log("lxy".startsWith('x'));//false

// 4. endWith () возвращает логическое значение, указывающее, находится ли строка параметров в конце исходной строки

      console.log("lxy".endsWith('y'));//true                    
      console.log("lxy".endsWith('x'));//false

рекомендация

отblog.csdn.net/hrj970808/article/details/109646655