x = 'foo'
x // "foo"
x.length // 3
x === 'foo' // true
x = new String('foo')
x // String { "foo" }
x.length // 3
x === 'foo' // false
x = new String('foo')
x === 'foo' // false
x.substring(0, 3) // 'foo'
x.substring(0, 3) === 'foo' // true
a,b
- операция "запятая", её результат равен последнему операнду, то есть b.a>b
и a<b
. Поскольку в b строка, а операции дают true или false, то, соответственно, сравнения не проходят и отрабатывает ветка default. a = { x: 1 };
b = a;
b.x = 100;
a; \\ { x: 100 }
b; \\ { x: 100 }
b = 100;
a; \\ { x: 100 }
b; \\ 100
Вот вам ещё пример ссылок:a = { x: 1 };
b = a;
c = { x: 1 };
a === b; // true
a === c; // false
$json = file_get_contents('php://input');
const getShuffledArray = (min, max) => {
const randoms = Array(max - min + 1).fill(min).map((n, i) => n + i);
for (let i = randoms.length - 1; i > 0; i -= 1) {
const r = Math.floor(Math.random() * (i + 1));
[randoms[i], randoms[r]] = [randoms[r], randoms[i]];
}
return randoms;
}
getShuffledArray(5, 10);
// [ 6, 10, 7, 5, 8, 9 ]
getShuffledArray(5, 10);
// [ 9, 6, 5, 7, 8, 10 ]
/a-яё/i
async function foo () {
// Code before await
const data = await something;
// Code after await
}
преобразуется вfunction foo () {
// Code before await
something.then((data) => {
// Code after await
});
}
const emojies= [
[/:smile:/g, '😂'],
[/:like:/g, '😎'],
];
const emojiReplace = (text) => {
let result = text;
for (let i = 0; i < emojies.length; i += 1) {
result = result.replace(emojies[i][0], emojies[i][1]);
}
return result;
}
console.log(emojiReplace(':smile::smile::smile::like:'));
// 😂😂😂😎