javascript - Questions sur l'opérateur ternaire JS
天蓬老师
天蓬老师 2017-05-19 10:17:40
0
3
612

Pourquoi le résultat reste-t-il inchangé lorsque les conditions changent lors de l'utilisation de l'opérateur de concaténation de chaînes dans l'opérateur ternaire ?

        var notice = "she is "+true? "?":"nt"+" here."
        alert(notice);    // "?"

        var notice = "she is "+false? "?":"nt"+" here."
        alert(notice);    // "?"

Cependant, si vous supprimez l'opérateur de concaténation de chaîne et la chaîne avant l'opérateur ternaire, cela reviendra à la normale

        var notice = false? "?":"nt"+" here."
        alert(notice);    // "nt here."

        var notice = true? "?":"nt"+" here."
        alert(notice);    // "?"

Besoin d'une solution ?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(3)
曾经蜡笔没有小新

Premièrement :
Qu'est-ce que l'opérateur ternaire ?
{1} ? {2} : {3} ;
Le moteur JS exécute d'abord Boolean({1}) s'il est True puis renvoie {2 }, False renvoie {3}Boolean({1}) 如果为 True 则返回 {2}False则返回{3}
然后:
"she is "+true === "she is true" //严格相等
所以
Boolean("she is "+true) === Boolean("she is true") // 等于 True
Boolean("she is "+false) === Boolean("she is false") // 也等于 True


但是:
false? "?":"nt"+" here."
Ensuite :

"elle est "+true === "elle est vraie" //Strictement égale🎜 🎜 Donc 🎜🎜Boolean("elle est "+true) === Boolean("elle est vraie") // égal à True🎜Boolean("elle est "+false) === Boolean("elle est fausse") // Également égal à True🎜
🎜🎜Mais : 🎜🎜false ? Le faux dans "?": "nt"+" ici." est une valeur booléenne. 🎜Donc Booléen(faux) === faux🎜Donc Booléen(true) === vrai🎜
小葫芦

Il s'agit d'un problème de priorité de l'opérateur Tout d'abord, + (opérateur de concaténation de chaînes) a une priorité plus élevée que ?: (Opérateur ternaire) a une priorité élevée, donc 运算符优先级问题. 首先+(字符串连接运算符)优先级比?:(三目运算符)优先级高,所以先执行+运算符.
所以两种情况下,分别得到"she is "+true"she is "+false.
再执行三目元算符,但是"she is "+true"she is "+false(String,除了"")转换成Boolean均为true. 所以三目运算符条件为真,所以得到结果为"?" exécute l'opérateur + en premier.
Donc dans les deux cas, on obtient "elle est "+true et "elle est "+false.

Exécutez à nouveau l'opérateur ternaire, mais "elle est "+true et " elle est "+false(String, sauf "") convertie en Boolean sont tous true code> . Donc la condition de l'opérateur ternaire est vraie, donc le résultat est "?".🎜
我想大声告诉你
var notice = "she is "+(true? "?":"nt")+" here."
        alert(notice);    // "?"
var notice = "she is "+(false? "?":"nt")+" here."
        alert(notice);    // "?"
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal