问答详情
源自:2-8 较量较量(比较操作符)

可不可以不定义jq1和jq2啊

为什么不可以不定义jq1和jq2,然后直接在下面代码中写入

document.write("numa大于numb的分数吗?"+numa>numb+"<br>");

document.write("numa不等于numb的分数吗?"+numa!=numb);

提问者:M麦 2015-06-05 10:57

个回答

  • TOTO晶
    2016-07-08 14:50:18

    可以不定义jq1和jq2得到同样的结果,需要通过加( )来提高优先计算级别,如

    document.write("numa大于numb的分数吗?"+(numa>numb)+"<br>");

    document.write("numa不等于numb的分数吗?"+(numa!=numb));

    得到的结果也是: 

    numa大于numb的分数吗?false

    numa不等于numb的分数吗?true

    但是 

    document.write("numa大于numb的分数吗?"+numa>numb+"<br>");得到的结果是:true

    因为"numa大于numb的分数吗?"+numa>numb+"<br>"计算类型是:String+Number>Number+String,根据运算法则,先计算+,在计算>,因此最后需要比较的是String>String,(String+Number = String)即"numa大于numb的分数吗?1">"7<br>",值为true.所以最后document.write()返回true

    注: 当关系运算符操作,两个操作数都是字符串(String)时,比较两个字符串对应的字符编码值(即Unicode)

    "numa大于numb的分数吗?1"的第一位是n,"7<br>"的第一位是7,n的字符编码值为110,7的字符编码值为55,110比55大,返回true

    同理,

    document.write("numa不等于numb的分数吗?"+numa!=numb);返回的值也是true;//String+Number!=Number,及String!=Number,优先运算+,再运算!=,答案为true

  • 伊兮尘昔
    2015-06-08 14:48:07

    可以啊,会有效果的,你自己看看