1. Что выведется и почему?
function fn1(a) {
a = a + 1
}
let a = 1
fn1(a)
console.log(a) // output: ?
2. Что выведется и почему?
function fn2(b) {
b = b + 1
return b
}
let b = 1
fn2(b)
console.log(b) // output: ?
3. Что выведется и почему?
function fn3(obj) {
obj.c = obj.c + 1
}
let obj = { c: 1 }
fn3(obj)
console.log(obj.c) // output: ?
4. Что выведется и почему?
function fn4(arr) {
arr[1] = arr[1] + 1
}
let arr = [1, 2, 3]
fn4(arr)
console.log(arr) // output: ?
5. Что будет?
let str = '123'
str.abc = 'xxx' // Что будет?
console.log(str.abc) // Что будет?
6. Отрефакторить код
const SomeComponent = () => {
const [count, setCount] = useState(0)
function upCount() {
setCount(count + 1)
}
const sendToAnalytic = useCallback((...args) => {
// doesn't matter
// some API
}, [])
useEffect(() => {
sendToAnalytic(count)
}, [count, sentToAnalytic])
return <button onClick={upCount}>UP</button>
}
7. Написать утилити тайп, который принимает другой тип и берет из него только ключи, которые равны строкам
interface SomeObject {
a: number
b: string
c: boolean
d: string
}
type onlyStringKeys = ? // output: 'b' | 'd'