function calculateSelector(element) {
let selector = '';
for(let current = element; current?.nodeType === 1; current = current.parentElement) {
if(current.id) {
selector = `#${current.id}>${selector}`;
break;
}
const tag = current.tagName.toLowerCase();
const classes = Array.from(current.classList, cls => `.${cls}`).join('');
selector = `${tag}${classes}>${selector}`;
}
return selector.slice(0, -1);
}
var input1 = document.getElementById("input1");
var input2 = document.getElementById("input2");
var button = document.getElementById("button");
button.onclick = function(){
var result = parseInt(input1.value) + parseInt(input2.value);
document.body.append(result);
}
Может у него было тяжелое начало, но сейчас, можно ли его считать полноценным?JS тьюринг полный язык и всегда им был. Тьюринг полнота означает, что на нем можно посчитать все что в принципе вычислимо.
Просто в нем даже импорт файла нормально нельзя сделать (даже в css он есть хоть и не полный)...Уже 5 лет как можно, в отличии, например, от C, где отдельные модули до сих пор нужно линковщиком собирать после компиляции. Так что, по Вашему C тоже не полноценный теперь?
Нету многих приколов, фишек и функций, хотя я понимаю что внедрять их поздно, и для браузера он создавался.Хотелось бы конкретики, каких таких "приколов" Вам не хватает? Вот тут ребята открыты к предложениям: https://github.com/tc39/ecma262/blob/master/CONTRI...
function cloneOrCreateDate(date) {
return date instanceof Date ? new Date(date) : new Date();
}
function getMidnightDate(date) {
const d = cloneOrCreateDate(date);
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
}
function addDaysToDate(days, date) {
const d = cloneOrCreateDate(date);
d.setDate(d.getDate() + days);
return d;
}
function timeOffset(d1, d2) {
return Math.abs(d1 - d2);
}
setTimeout(() => {
// логика в полночь
}, timeOffset(Date.now(), addDaysToDate(1, getMidnightDate())));
let a;
t >>>= 0;
if(t < 128) a = 1;
else if(t < 16384) a = 2;
else if(t < 2097152) a = 3;
else if(t < 268435456) a = 4;
else a = 5;
this.tail.next = new f(a, t);
this.tail = this.tail.next;
this.len += this.tail.len;
return this;
async function checkUser(login, password) {
const ad = new ActiveDirectory(ad_config)
const auth = await new Promise((resolve, reject) => {
ad.authenticate(login, password, (err, auth) => {
if (err) {
return reject(err)
}
resolve(auth)
})
})
return auth
}
Подойдет ли тут многопоточность или я что то путаю?В JS нет многопоточности.
Как это реализовать? С помощью чего?Просто отправить несколько запросов сразу. Запросы работают асинхронно и не блокируют поток выполнения.
// запомнили в x значение 0
x = 0;
// запомнили в y значение -200
y = -200;
// тут выражение из нескольких действий
x = 0 * x + 1 * y
// 1. вместо переменных подставим значения
// 0 * 0 + 1 * -200
// 2. посчитаем умножения
// 0 + -200
// 3. посчитаем сложения
// -200
// запомним -200 в x
// на этом этапе у нас в x запомнено -200 и в y тоже -200
// с этим проделайте по аналогии
y = -1 * x + 0 * y
function render(message) {
const p = document.createElement("p"); // создали p, его еще нигде нет в DOM, все ok
p.textContent = message;
windowChatUser1.append(p); // поместили наш p в windowChatUser1, с этого момента он есть в DOM
windowChatUser2.append(p); // переместили наш p в windowChatUser2
}
логично, что из windowChatUser1 наш p исчез при перемещении в windowChatUser2, так как один элемент не может быть в двух родителях сразуwindowChatUser2.append(p.cloneNode(true));
.slider__slide {
/* изменяем внешний контейнер на viewport величины */
height: 100vh;
width: 100vw;
}
/* прописываем высоту внутренним контейнерам */
.slick-list, .slick-track {
height: 100%;
}
const ApiServiceModule = {
get: (url: string): Promise<unknown> => fetch(url)
.then(response => response.json())
.catch(err => console.error(err))
}