Рубрики
Без рубрики

Что такое JavaScript и как он работает под капотом

Узнайте, что такое JavaScript и то, что делает его особенным как прототипы наследования, первоклассные функции, Multi -Paradigm и как работает JavaScript, и то, что делает его безблокировкой, даже когда является одиночной резьбой.

Автор оригинала: Mukul Jain.

Что такое JavaScript

Давайте поговорим о одном из самых известных языков, JavaScript, один из трех основных компонентов (HTML, CSS & JS) веб-сайта. Wikipedia говорит (для понимания цели я буду поломки определения в нескольких частях)

JavaScript является прототипом на основе первых классов функций

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

Например

function Circle(radius) {
    this.radius = radius;
}

Circle.prototype.area = function () {
    var radius = this.radius;
    return Math.PI * radius * radius;
};

Circle.prototype.circumference = function () {         
    return 2 * Math.PI * this.radius;
};

var circle = new Circle(5);
var circle2 = new Circle(10);

circle.area() // 78.53981633974483
circle.diameter() // Uncaught TypeError: circle2.diameter is not a function

Здесь Радиус это Номер который также наследует свойства от Номер Вот почему это выводит "5" на circle.radius.tostring ()

По Первоклассные функции Это означало, что функция может быть сохранена в переменных, а затем может быть передано вокруг.

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

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

Multi-Paradigm Средства, вы можете запрограммировать с различными стилями кодирования, такими как OOP или функционал или смешивать обоих.

Он имеет API для работы с текстом, массивами, датами и регулярными выражениями, но не включает в себя какие-либо ввода/вывод, такие как сетевые, хранилище или графические средства, полагаясь за них при хост-среде, в которой она встроена.

JS имеет API для текста, массивов и т. Д., Это означает, что JS может подсчитать элементы в массиве или может выпустить что-то из этого, но он не может выполнить сам вызов API, да, вы прочитаете, браузер делает.

Как работает JavaScript

Давайте посмотрим, как все работают под капотом.

JavaScript – это отдельная резьба, это означает, что он может выполнить одно во время, проверьте указанную ниже рисунок, когда там какая-то работа, как console.log или A + B Он подталкивает его в стек, управляет его и выскочит его.

js.png.

Если это функциональный вызов, то он ставит функцию в стеке, работает, высказывается, как показано ниже

// taking this code as example
var add = function(a,b){
    return a + b;
}

var x = 2;
var y = 7;

var z = sum(x,y);

console.log(z);
Группа 3.png.

Тогда как это не блокировка? Почему не такие как Сетримс или асинхронный звонок завершен первым блокировкой другого кода?

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

Давайте посмотрим на рабочий пример, для простоты, которую мы используем, будет console.log и время Сетримс Только.

setTimeout(function(){
    console.log("a");
},1500)

console.log("d");

setTimeout(function(){
    console.log("b");
},500)

setTimeout(function(){
    console.log("c");
},1000)

ezgif.com-Video-to-gif.gif

Это все на сегодня. Если у вас есть какие-либо сомнения или улучшение, комментарий здесь или сообщите мне!

Благодаря Филипсу Робертсу за Wonderfull Объяснение на работе JS