Skip to content

Instantly share code, notes, and snippets.

@etherealHero
Created May 19, 2026 13:19
Show Gist options
  • Select an option

  • Save etherealHero/8a79348102601d6a53dba684e13157ee to your computer and use it in GitHub Desktop.

Select an option

Save etherealHero/8a79348102601d6a53dba684e13157ee to your computer and use it in GitHub Desktop.
js course
var userName = "Perry";
var userName = "Jerry"; // эта переменная перетрет верхнюю
let age = 10;
// let age = true; // нельзя повторно объявить переменную через let или const если она была объявлена раннее
let secondUser = {
name: userName,
age: age,
isAdmin: true,
skills: ["js", "docker"],
}
const usersList = [
{
name: "Robin",
age: 25,
isAdmin: false,
skills: ["bash", "js", "pwsh"],
},
secondUser,
{
name: "Ted",
age: 27,
isAdmin: true,
skills: ["bash", "pwsh"],
}
];
//
// Задача: проверить имеет ли последний пользователь в списке навык js
//
const userListLength = usersList.length; // у массива есть свойство как и у объектов. Свойство length вернет число равное кол-ву элементов в массиве
const lastUser = usersList[
userListLength - 1 // доступ к элементу массива через индекс. Индекс идет с нуля. Длина массива на единицу больше крайнего индекса массива
];
const lastUserSkillsLength = lastUser.skills.length;
const lastUserName = lastUser.name;
let hasJSSkill = false;
let nonJSSkills;
for (var i = 0; i < lastUserSkillsLength; i = i + 1) {
let currentSkill = lastUser.skills[i];
let indexToNum = i + 1; // приводим индекс к человеческому виду - порядковому номеру
let logMessage = indexToNum + "-й навык " + lastUserName + " является " + currentSkill;
console.log(logMessage);
if (currentSkill == "js") {
hasJSSkill = true;
} else {
if (typeof nonJSSkills == "string") {
nonJSSkills = nonJSSkills + ", " + currentSkill;
} else {
nonJSSkills = currentSkill; // произойдет один раз когда переменная nonJSSkills еще не инициализирована (пустая)
}
}
console.debug("значение переменной nonJSSkills: " + nonJSSkills); // console.debug тоже самое что и console.log. Тип это для отладки написали
}
console.debug(usersList);
//
// Задача: проверить имеет ли первый и второй пользователи в списке навык js
//
// можно написать такую же пелену как и сверху, либо описать функцию и затем вызвать ее два раза
/**
* @param {{ name: string, age: number, skills: string[] }} user
* @param {string} skill
*/
function isUserHasSkill(user, skill) {
console.debug("\ncheck if " + user.name + " has '" + skill + "' skill");
for (var i = 0; i < user.skills.length; i = i + 1) {
console.log("check skill " + user.skills[i]);
if (user.skills[i] == skill) {
console.log("user " + user.name + " has '" + skill + "' skill. Exit function.")
// return прерывает дальнейшее выполнение функции (т.е. переходит как будто в конец функции)
// после return можно написать что нужно вернуть (это не обязательно, но текущая функция будет возвращать булево значение)
return true;
}
}
console.log("user skills not contains " + skill);
return false;
} // конец функции
const isFirstUserHasShellSkill = isUserHasSkill(usersList[0], "shell");
const isSecondUserHasJSSkill = isUserHasSkill(usersList[1], "js");
console.log("isFirstUserHasShellSkill: " + isFirstUserHasShellSkill);
console.log("isSecondUserHasJSSkill: " + isSecondUserHasJSSkill);
// запускать через node path/to/thisScript.js
/*
Плейлисты (в порядке обучения)
1. html - https://www.youtube.com/playlist?list=PLuY6eeDuleIMjV7Kff8yf8RA-XwjXVGgl
2. css - https://www.youtube.com/playlist?list=PLuY6eeDuleIOn8NTkZVsUn9jDCkdoJH9Z
3. верстка после html и css (можно практиковаться без знаний js)
- https://www.youtube.com/playlist?list=PLuY6eeDuleIPKCe3dSJfqkGXS-Ebky02v
- https://www.youtube.com/playlist?list=PLoq3Accf02PVdUqjqPdWMG4HbEZXlhICW
4. js - https://www.youtube.com/playlist?list=PLuY6eeDuleINjS4_G7KuYThU_T4uzpAuG
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment