慕粉3438060
2016-07-08 12:08
这个为什么numa>numb要重新赋值jq1呢?为什么不像前面的例子当中的一样直接用numa>numb呢?我试了一下,变成这样了,为什么不像例子里面那样的
numa>numb返回的是一个布尔值(true/false),jq1=numa>numb结果就是jq1=(true/false),再输出出来。你直接把numa>numb写到输出语句里需要把引号去掉加个小括号(numa>numb),这样就可以了。加上引号就是输出引号里边的字符串,而不是它的结果。如果你把 jq1加上双引号 写到输出语句里,那输出的结果是jq1本身,而不是numa>numb的结果。
document.write(exp1,exp2,exp3,....)
exp1,exp2,exp3,....是指字符串参数,这些字符串参数可以是变量或值为字符串的表达式.
另外需要知道:
String+Boolean =String 如 var a = "1"+true 则 a ="1true"
String+String =String 如 var a ="1" +" aa" 则 a ="1aa"
String +Number =String 如 var a ="1"+ 2 则 a ="12"
举例:
var numa,numb,jq1;
numa=1;
numb=7;
jq1=numa>numb;
(1)document.write("numa大于numb的分数吗?"+jq1+"<br>")
//String+Boolean+String 最后得到String
结果: numa大于numb的分数吗?false
(2)document.write("numa大于numb的分数吗?"+"numa>numb"+"<br>")
//String+String+String 最后得到String
结果: numa大于numb的分数吗?numa>numb
(3)document.write("numa大于numb的分数吗?"+"(numa>numb)"+"<br>")
//String+String+String 最后得到String
结果: numa大于numb的分数吗?(numa>numb)
(4)document.write("numa大于numb的分数吗?"+(numa>numb)+"<br>")
//String+(Number>Number)+String,根据运算法则,此时的(numa>numb)会优先运算,就是先算括号里再看括号外,(numa>numb)为(1>7),得到false;然后运算String+Boolean+String,最后得到String ;
结果: numa大于numb的分数吗?false
(5)document.write("numa大于numb的分数吗?"+numa>numb+"<br>")
//String+Number>Number+String,根据运算法则,先计算+,在计算>,因此最后需要比较的是String>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
结果: true
(6)document.write("numa大于numb的分数吗?"+numa+">"+numb+"<br>")
////String+Number+String+Number+String 最后得到String
结果: numa大于numb的分数吗?1>7
(7)document.write("numa大于numb的分数吗?"+"numa">"numb"+"<br>")
//String+String>String+String,同理于(5),"numa大于numb的分数吗?numa">"numb<br>",前三位n,u,m的值都相同,比较第四位,a的字符编码值为97,b的字符编码值为98,97比98小,结果为false
结果: false
不要加引号,加了引号他就成为了字符串了,就不是变量。写成document.write(“numa大于numb的分数吗?”+numa+">"+numb)
JavaScript进阶篇
468190 学习 · 21891 问题
相似问题