const findPower = (number, base = 2, power = 0) => {
if (power > 1000) return new Error(`Too large number or it's not a power of ${base}`);
if (number <= 0) return new Error(`Number must be > 0`);
if (number === base ** power) return power;
return findPower(number, base, power + 1)
}
console.log(findPower(8)); // 3
console.log(findPower(16)); // 4
console.log(findPower(1)) // 0
console.log(findPower(3)) // Error
console.log(findPower(-1)) // Error
const obj = {};
for (const key of object) {
if (object.hasOwnProperty(key)) {
const thirdElement = object[key][2];
}
}
const obj = {};
const values = Object.values(obj);
const value = values[0]; // или сразу Object.values(obj)[0]
if (value) {
const thirdElement = value[2];
}
loop1:
for (i = 0; i < 3; i++) { // Первый цикл, обозначенный меткой "loop1"
loop2:
for (j = 0; j < 3; j++) { // Второй цикл, обозначенный меткой "loop2"
if (i == 1 && j == 1) continue loop1;
console.log(`i = ${i}, j = ${j}`);
}
}
const App = () => {
const [state, setState] = useState(0);
// используем тогда, когда нужно установить значенее, которое не зависит от state
setState(1);
setState((prevState) => {
return prevState + 1;
// мы могли б написать return state + 1,
// но тогда б мы не были б уверены, что там именно прошлый state (возможно, он еще не обновился)
});
};
const clickHandler = () => {
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'ecommerce': {
'currencyCode': 'RUB',
'detail': {
'actionField': { 'list': 'Product detail page' },
'products': [{
'name': 'Product 1',
'id': 'ID1',
'price': '23.5',
'brand': 'Brand 1',
'category': 'Category 1/Subcategory 11',
'variant': 'Variant 1'
}]
},
'impressions': [{
'name': 'Product 3',
'id': 'ID3',
'price': '17.75',
'brand': 'Brand 2',
'category': 'Category 1/Subcategory 12',
'variant': 'Variant 1',
'list': 'Recommendation',
'position': 1
},
{
'name': 'Product 4',
'id': 'ID4',
'price': '12.5',
'brand': 'Brand 3',
'category': 'Category 1/Subcategory 13',
'variant': 'Variant 1',
'list': 'Recommendation',
'position': 2
}
]
},
'event': 'gtm-ee-event',
'gtm-ee-event-category': 'Enhanced Ecommerce',
'gtm-ee-event-action': 'Product Details',
'gtm-ee-event-non-interaction': 'True',
});
}
const btn1 = document.querySelector(`.btn1`);
const btn2 = document.querySelector(`.btn2`);
btn1.addEventListener(`click`, clickHandler);
btn2.addEventListener(`click`, clickHandler);