Size: a a a

2020 April 04

В

Виктория in pro.js
Просто понять-то сложно, мля...
источник

DE

Denis Efremov in pro.js
Кто оптимизирует этот код?
function binarySimulation(s, q) {
 const result = []
 s = [...s]
 for (const val of q) {
   const [mode, fr, to] = val
   if (mode === 'I') {
     for (let i = 0; i < s.length; i += 1) {
       if (i >= fr - 1 && i <= to - 1) {
         s[i] = String(1 - s[i])
       }
     }
   }
   if (mode === 'Q') {
     result.push(s[fr - 1])
   }
 }
 return result
}
источник

S

Syntax Highlight Bot in pro.js
Denis Efremov
Кто оптимизирует этот код?
function binarySimulation(s, q) {
 const result = []
 s = [...s]
 for (const val of q) {
   const [mode, fr, to] = val
   if (mode === 'I') {
     for (let i = 0; i < s.length; i += 1) {
       if (i >= fr - 1 && i <= to - 1) {
         s[i] = String(1 - s[i])
       }
     }
   }
   if (mode === 'Q') {
     result.push(s[fr - 1])
   }
 }
 return result
}
источник

DP

Defragmented Panda in pro.js
var my=(function(){
var a=4;
var b=5;
return this;
})()

Можно ли при вызове подобной функии вернуть все ее переменные в ее scope?

Например чтобы
log(my.a)
выдавало 4?

Не меняя строку "var a=4;"
источник

DE

Denis Efremov in pro.js
Тебе надо this.a а не var a
источник

DP

Defragmented Panda in pro.js
Denis Efremov
Тебе надо this.a а не var a
Я понимаю что можно так. Но мне интересно есть ли возможность не меняя "var a" как-то просканировать текущий scope и скопировать все в this например
источник

DE

Denis Efremov in pro.js
Конечно есть. В инспекторе же его видно
источник

В

Виктория in pro.js
Defragmented Panda
var my=(function(){
var a=4;
var b=5;
return this;
})()

Можно ли при вызове подобной функии вернуть все ее переменные в ее scope?

Например чтобы
log(my.a)
выдавало 4?

Не меняя строку "var a=4;"
return {a, b}
источник

В

Виктория in pro.js
Defragmented Panda
Я понимаю что можно так. Но мне интересно есть ли возможность не меняя "var a" как-то просканировать текущий scope и скопировать все в this например
Нет. Объект LexicalEnvironment скрыт от прямого доступа
источник

DP

Defragmented Panda in pro.js
Виктория
Нет. Объект LexicalEnvironment скрыт от прямого доступа
Спасибо
источник

I

Iarosh in pro.js
Привет. подскажите пожалуйста, есть ли еще вариант оптимизировать решение этой задачи? Например не используя if else внутри case

https://codepen.io/7team/pen/WNvBYaR

при нажатии на кнопку сравниваются числа в двух select -  s111 и s112, соответствующее число выводится в out11
источник

В

Виктория in pro.js
Iarosh
Привет. подскажите пожалуйста, есть ли еще вариант оптимизировать решение этой задачи? Например не используя if else внутри case

https://codepen.io/7team/pen/WNvBYaR

при нажатии на кнопку сравниваются числа в двух select -  s111 и s112, соответствующее число выводится в out11
if там вообще не нужен
Достаточно преобразовать значения из селектов s111 и s112 в числа и затем задействовать оператор && или || соответственно.
То есть в кейсах достаточно прописать
out11.textContent = s111 && s112
и
out11.textContent = s111 || s112
источник

I

Iarosh in pro.js
Виктория
if там вообще не нужен
Достаточно преобразовать значения из селектов s111 и s112 в числа и затем задействовать оператор && или || соответственно.
То есть в кейсах достаточно прописать
out11.textContent = s111 && s112
и
out11.textContent = s111 || s112
Благодарю
источник

В

Виктория in pro.js
От громоздкого свича тоже можно избавиться, создав мапу с функциями
let actions = {
   '&&': (a, b) => a && b,
   '||': (a, b) => a || b
}
И юзать как-то так
out11.textContent = actions[s113](s111, s112);
источник

DE

Denis Efremov in pro.js
Виктория
От громоздкого свича тоже можно избавиться, создав мапу с функциями
let actions = {
   '&&': (a, b) => a && b,
   '||': (a, b) => a || b
}
И юзать как-то так
out11.textContent = actions[s113](s111, s112);
Оптимизируй лучше кату
источник

В

Виктория in pro.js
Какую кату?
источник

DE

Denis Efremov in pro.js
источник

DE

Denis Efremov in pro.js
function binarySimulation(s, q) {
 function turn (v) {
   return (~Number('0b' + v) & (Math.pow(2, v.length) - 1)).toString(2).padStart(v.length, 0)
 }
 const result = []
 const a = Array.from(s)
 for (const val of q) {
   const [mode, fr, to] = val
   if (mode === 'I') {
     const start = fr - 1
     const len = to - start
     a.splice(start, len, ...turn(s.slice(start, start + len)))
   }
   if (mode === 'Q') {
     result.push(a[fr - 1])
   }
 }
 return result
}
источник

DE

Denis Efremov in pro.js
Виктория
Какую кату?
function binarySimulation(s, q) {
 const result = []
 s = [...s]
 for (const val of q) {
   const [mode, fr, to] = val
   if (mode === 'I') {
     for (let i = 0; i < s.length; i += 1) {
       if (i >= fr - 1 && i <= to - 1) {
         s.splice(i, 1, String(1 - s[i]))
       }
     }
   }
   if (mode === 'Q') {
     result.push(s[fr - 1])
   }
 }
 return result
}
источник

S

Syntax Highlight Bot in pro.js
Denis Efremov
function binarySimulation(s, q) {
 const result = []
 s = [...s]
 for (const val of q) {
   const [mode, fr, to] = val
   if (mode === 'I') {
     for (let i = 0; i < s.length; i += 1) {
       if (i >= fr - 1 && i <= to - 1) {
         s.splice(i, 1, String(1 - s[i]))
       }
     }
   }
   if (mode === 'Q') {
     result.push(s[fr - 1])
   }
 }
 return result
}
источник