Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   true ? ()=>{alert("true");} : alert("false"); (https://javascript.ru/forum/css-html/82202-true-%3D-%7Balert-true-%3B%7D-alert-false-%3B.html)

fori 31.03.2021 07:29

true ? ()=>{alert("true");} : alert("false");
 
Здравствуйте, играясь с v-bind я обнаружыл возможность применения тернарного оператора к примеру
v-bind:style="page == 2 ? { opacity: 1 } : { opacity: 0 }"

Но оказалось что кроме присвоения opacity мне былобы удобно выполнить функцыю из methods:{},
Но если я использою просто тернарный оператор с вызовом функции
<script>true ?  alert("true") : alert("false");</script>
все работает но возможно ли тыкнуть туда ище и лямбда-функцыю
тыпа так (не работает)
<script>true ? ()=>{alert("true1");alert("true2");} : alert("false");</script>

В общем я надеюсь получить чтото типа
v-bind:style="page == 2 ? ()=>{alert("true"); {opacity:1}} : { opacity: 0 }"

Возможно ли ето

voraa 31.03.2021 08:19

Тетрарный оператор имеет вид
выражение? выражение1 : выражение 2

Выражение 1 и выражение2 должны вычислять какое то значение. Т.е исполняться.

Исполнением этого выражения
()=>{alert("true"); {opacity:1}}
является создание новой функции. Только создание, а не ее вызов
Если надо выполнить какие то действия и потом вернуть значение, надо использовать оператор ,
Попробуйте так
v-bind:style="page == 2 ? (alert("true"), {opacity:1}) : { opacity: 0 }"


Часовой пояс GMT +3, время: 08:31.