recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Questions sur l'opérateur ternaire JS

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 ?

天蓬老师天蓬老师2778 Il y a quelques jours662

répondre à tous(3)je répondrai

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:19:40

    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 }< /code>, 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🎜

    répondre
    0
  • 高洛峰

    高洛峰2017-05-19 10:19:40

    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< / code> 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 . Donc la condition de l'opérateur ternaire est vraie, donc le résultat est "?".🎜

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:19:40

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

    répondre
    0
  • Annulerrépondre