${…}. Есть свойство length и дюжина полезных стандартных методов.const s = "привет, мир";
s.length // 11
s.at(0) // "п" — первый символ (ES2022; раньше s.charAt(0))
s.at(-1) // "р" — последний символ
s.slice(1, 4) // "рив" — символы с 1-го по 3-й
s.slice(-3) // "мир" — последние три символа
s.indexOf("и") // 2 — позиция первой «и»
s.includes("мир") // true (ES2015)
s.startsWith("при") // true (ES2015)
s.split(", ") // ["привет", "мир"]
s.replace("и", "И") // "прИвет, мир" — заменяет только первое вхождение!
s.replaceAll("и", "И") // "прИвет, мИр" — все вхождения (ES2021)
s.toUpperCase() // "ПРИВЕТ, МИР"
`${s}!` // "привет, мир!" — шаблонная строка

const a = ["мир"]; // массив из одного элемента
const first = a[0]; // читаем элемент 0
a[1] = 3.14; // записываем элемент 1
a.push("привет"); // добавляем в конец
a.at(-1); // "привет" — последний элемент (ES2022)
const [x, y] = a; // деструктуризация (ES2015): x = "мир", y = 3.14
const b = [...a, "!"]; // spread: новый массив, a не меняется
// const запрещает переприсвоить a, но менять сам массив можно



If I had a nickel for every time I've writtenfor (i = 0; i < N; i++) in C I’d be a millionaire.
.push().unshift().pop().shift().concat().slice().join().reverse().sort().indexOf().forEach().map().reduce().filter().some().find().includes()"abc".toUpperCase(), движок на мгновение оборачивает строку в объект-обёртку. По ключу можно хранить не только значение, но и функции — они называются «методами». С помощью таких объектов можно реализовать и классическое ООП, но в JavaScript всё построено немного по-другому — на прототипном наследовании. С ES2015 появился привычный синтаксис class, но под капотом это всё те же прототипы.

{
"file_exclude_patterns":
[
".DS_Store",
"*.psd",
"*.db",
"*.sublime-project",
"*.sublime-workspace",
"*.log"
],
"find_selected_text": false,
"font_size": 14,
"highlight_line": false,
"ignored_packages":
[
"Vintage"
],
"line_padding_bottom": 1,
"line_padding_top": 1,
"open_files_in_new_window": false,
"scroll_past_end": true,
"show_panel_on_build": false,
"tab_size": 4
}
// JavaScript String.fromCharCode(num1, num2, ...) Array.isArray(array) Object.create(proto, [propObject]) // Underscore.js _.map(list, iterator, [context]) _.filter(list, predicate, [context]) _.sortBy(list, iterator, [context]) _.toArray(list) _.range([start], stop, [step]) // jQuery jQuery.ajax(url, [settings]) jQuery.unique(array) jQuery.each(array, callback)
"abc".length
[1,2,3,4,5].forEach(…)
// С ES2015 классы пишут так:
class Shape {
constructor() {
this.x = 0;
this.y = 0;
}
move(x, y) {
this.x += x;
this.y += y;
}
}
class Rectangle extends Shape {}
// Под капотом это те же прототипы:
// typeof Shape === "function"
// Object.getPrototypeOf(Rectangle) === Shape