JavaScript test
10.3K subscribers
3.04K photos
6 videos
4.33K links
Проверка своих знаний по языку JavaScript.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/js_test

РКН: clck.ru/3KHeYk
Download Telegram
❗️Что будет на выходе:

const original = {
name: 'Sarah',
hobbies: ['reading', 'coding'],
address: { city: 'Portland', zip: 97201 }
};

const shallow = { ...original };
const deep = JSON.parse(JSON.stringify(original));

shallow.name = 'Emma';
shallow.hobbies.push('hiking');
shallow.address.city = 'Seattle';

deep.hobbies.push('swimming');
deep.address.zip = 98101;

console.log(original.hobbies.length, original.address.city);

Ответ: 3, Seattle

JavaScript test | #JavaScript
❗️Что будет на выходе:

const target = { name: 'Sarah', age: 25 };
const handler = {
get(obj, prop) {
if (prop in obj) {
return obj[prop].toString().toUpperCase();
}
return `Property ${prop} not found`;
},
set(obj, prop, value) {
obj[prop] = value * 2;
return true;
}
};
const proxy = new Proxy(target, handler);
proxy.salary = 50000;
console.log(proxy.name);
console.log(proxy.age);
console.log(proxy.salary);
console.log(proxy.city);

Ответ: Sarah 25 100000 Property city not found
JavaScript test | #JavaScript
❗️Что будет на выходе:

function testScope() {
var x = 'outer';
let y = 'outer';

if (true) {
var x = 'inner';
let y = 'inner';
console.log(x, y);
}

console.log(x, y);
}

testScope();

Ответ: inner inner inner outer

JavaScript test | #JavaScript
❗️Что будет на выходе:

class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}

get area() {
return this.width * this.height;
}
}

const rectangle = new Rectangle(5, 10);
console.log(rectangle.area());

Ответ: TypeError: rectangle, area is not a function at line 13

JavaScript test | #JavaScript
❗️Что будет на выходе:

function task1() {
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
Promise.resolve().then(() => setTimeout(() => console.log('D'), 0));
Promise.resolve().then(() => console.log('E'));
setTimeout(() => console.log('F'), 0);
console.log('G');
}

task1();

Ответ: A G C E B F D

JavaScript test | #JavaScript
❗️Что будет на выходе:

const compose = (...fns) => (x) => fns.reduceRight((acc, fn) => fn(acc), x);
const pipe = (...fns) => (x) => fns.reduce((acc, fn) => fn(acc), x);

const double = (x) => x * 2;
const addTen = (x) => x + 10;
const square = (x) => x * x;
const negate = (x) => -x;

const transform1 = compose(negate, square, addTen, double);
const transform2 = pipe(double, addTen, square, negate);

const input = 3;

console.log(transform1(input));
console.log(transform2(input));
console.log(transform1(input) === transform2(input));

Ответ: -256 -256 true
JavaScript test | #JavaScript
❗️Что будет на выходе:

const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];

let columnSums = [];

for (let i = 0; i < matrix[0].length; i++) {
let sum = 0;
for (let j = 0; j < matrix.length; j++) {
sum += matrix[i][i];
}
columnSums.push(sum);
}
console.log(columnSums);

Ответ: 3
[ 3, 15, 27 ]

JavaScript test | #JavaScript
❗️Что будет на выходе:

class Session {
#id;
constructor(id) {
this.#id = id;
}
getId() { return this.#id; }
}

const activeSessions = new WeakSet();

const s1 = new Session("user_42");
const s2 = new Session("user_99");
let s3 = new Session("user_07");

activeSessions.add(s1);
activeSessions.add(s2);
activeSessions.add(s3);

console.log(activeSessions.has(s1)); // line A
console.log(activeSessions.has(s3)); // line B

s3 = null;

console.log(activeSessions.has(s3)); // line C

activeSessions.delete(s2);
console.log(activeSessions.has(s2)); // line D
console.log(activeSessions.size); // line E

Ответ: true true false false undefined
JavaScript test | #JavaScript
❗️Что будет на выходе:

var a = 5;
function test() {
console.log(a);
var a = 10;
console.log(a);
}

test();

Ответ: undefined 10

JavaScript test | #JavaScript
❗️Что будет на выходе:

const inventory = {
apples: 5,
bananas: 0,
cherries: 12,
dates: undefined,
elderberries: null,
};

const summary = Object.entries(inventory)
.filter(([_, value]) => value)
.reduce((acc, [key, value]) => {
acc[key] = value * 2;
return acc;
}, {});

console.log(Object.keys(summary).length);
console.log(Object.values(summary).every(v => v > 10));
console.log(Object.keys(inventory).length === Object.keys(summary).length);

Ответ: 2 false false

JavaScript test | #JavaScript
❗️Что будет на выходе:

const user = {
profile: {
name: "Alice",
settings: null
},
getPreferences() {
return this.profile.settings?.theme || "default";
}
};

const admin = {
profile: {
name: "Admin"
},
getPreferences() {
return this.profile.settings?.theme || "default";
}
};

console.log(user.getPreferences());
console.log(admin.getPreferences());
console.log(user.profile.extra?.id?.toString());

Ответ:
default default undefined

JavaScript test | #JavaScript
Что будет на выходе?

var a=[1,2,3,4,5];
console.log(a.some(x=>x>4));
console.log(a.some(x=>x>5));

Ответ:
true
false


JavaScript test | #JavaScript
Что будет на выходе?

const user = {
profile: {
getName: () => "Marcus",
getAge: () => 30,
},
settings: null,
};

const name = user.profile?.getName?.();
const age = user.profile?.getAge?.();
const theme = user.settings?.getTheme?.() ?? "dark";
const lang = user.address?.getLocale?.() ?? "en-US";

console.log(`${name} | ${age} | ${theme} | ${lang}`);

Ответ:
Marcus | 30 | dark | en-US

JavaScript test | #JavaScript
❗️Что будет на выходе?

const inventory = {
items: ['apple', 'banana', 'orange'],
[Symbol.iterator]: function() {
let index = 0;
const items = this.items;

return {
next: function() {
return index < items.length ?
{ value: items[index++].toUpperCase(), done: false } :
{ done: true };
}
};
}
};

const result = [...inventory].join(' + ');
console.log(result);

Ответ: APPLE + BANANA + ORANGE

JavaScript test | #JavaScript
❗️Что будет на выходе:

const target = { name: 'Maya', age: 25 };
const handler = {
get(obj, prop) {
if (prop in obj) {
return obj[prop];
}
return `Property '${prop}' not found`;
},
set(obj, prop, value) {
if (typeof value === 'string') {
obj[prop] = value.toUpperCase();
} else {
obj[prop] = value;
}
return true;
}
};
const proxy = new Proxy(target, handler);
proxy.city = 'tokyo';
console.log(proxy.name);
console.log(proxy.city);
console.log(proxy.country);

Ответ: Maya TOKYO Property 'country' not found

JavaScript test | #JavaScript
❗️Что будет на выходе:

const obj = { a: 1, b: { c: 2 } };
const frozen = Object.freeze(obj);
frozen.a = 99;
frozen.b.c = 88;
frozen.d = 77;

const sealed = Object.seal({ x: 10, y: 20 });
sealed.x = 30;
sealed.z = 40;
delete sealed.y;

console.log(obj.a, obj.b.c, obj.d);
console.log(sealed.x, sealed.y, sealed.z);

Ответ: 1 88 undefined, 30 20 undefined

JavaScript test | #JavaScript
❗️Что будет на выходе:

const num = 10;
const add = () => {
console.log(num + num);
};

(function () {
const num = 5;
add();
})();

Ответ: 20

JavaScript test | #JavaScript
❗️Что будет на выходе:

class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}

try {
try {
throw new CustomError('inner error');
} catch (e) {
console.log(e.name);
throw new Error('outer error');
}
} catch (e) {
console.log(e.message);
console.log(e instanceof CustomError);
}

Ответ: CustomError outer false

JavaScript test | #JavaScript
Что будет на выходе?

var s="100001,111,12222221,222,3333,12321,14441";

var match1=s.match(/1.*1/g)
var match2=s.match(/1.+1/g)

console.log(match1)
console.log(match2)

Ответ:
[ '100001,111,12222221,222,3333,12321,14441' ]
[ '100001,111,12222221,222,3333,12321,14441' ]


JavaScript test | #JavaScript
❗️Что будет на выходе:

const str = "a 1 b 2 c 3 d 04";

function foo(str) {
const regex = /\d+/g;
const matches = str.match(regex);
return matches.lenght;
}

Ответ: 4

JavaScript test | #JavaScript
❗️Что будет на выходе:

const promise1 = Promise.resolve('first');
const promise2 = new Promise(resolve => {
resolve('second');
});

const promise3 = Promise.resolve().then(() => 'third');

async function test() {
console.log('start');

const result1 = await promise1;
console.log(result1);

const result2 = await promise2;
console.log(result2);

const result3 = await promise3;
console.log(result3);

console.log('end');
}

test();

Ответ: start first second third end

JavaScript test | #JavaScript