慕UI2261137
2016-06-17 17:25
var a,b,sum;
var a = 5;
var b = 100%7;
sum = a > b && a*b > 0 ;
document.write( "我认为 a 的值是:" +a + " b的值是:" + b + "sum 的值是:" + a+b +"<br/>");
为什么sum的值为a和b的值的连接,a和b明明是两个整型变量啊,a+b不应该是加法运算吗
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var a =10;
var b = 20 ;
var c = a + b;
document.write(c);
document.write( "看看效果和区别,应该是符号优先级问题:"+ (a + b )+ a + b + "a+b");
</script>
</body>
</html>
好了 谢谢
为什么我的运行不起来 js 2-13
汗~~,差点误导别人。。。结合上楼,我重新归纳哈:
document.write()中原来还带有结合性和优先级:
1.document.write(1+2+"3") //结果为字符串33 document.write(typeof(1+2+"3"))
document.write(1+2) //结果为数字3 document.write(typeof(1+2))
document.write(a+b+"") //结果为字符串3 document.write(typeof(a+b+""))
document.write(a+b) //结果为数字3 document.write(typeof(a+b))
//原因:括号内按照从左往右顺序执行,先是1+2=3,3遇到字符串"3",转变为字符串,然后就是"33"了。
2.document.write("3"+1+2) //结果为字符串312 document.write(typeof("3"+1+2))
document.write(3+1+2) //结果为数字6 document.write(typeof(3+1+2))
//原因:最开始遇到"3",所以后面的数字都转为字符串。
3.()的优先级比算数运算符的高,所以优先执行
document.write("3"+(1+2)) //结果为字符串33而不是312
document.write( "我认为 a 的值是:" +a + " b的值是:" + b + "sum 的值是:" + a+b +"<br/>");;这段代码你自己乱敲的吧,练习题我看了N遍都没见过这段代码。。。 同楼上见解。。
document.write语言中+不表示运算,仅仅表示字符串或者变量的串联
再比如
document.write("a+b")结果为a+b
document.write(1+2)结果为3
document.write(1+2+"3")结果为1+23;
document.write("1+2"+"3+4")结果为1+23+4
document.write(内容)中只要内容含有字符串(如空字符"","我认为 a 的值是:","<br/>"),其余整型变量都会转换为字符串,+相当于将多个字符串相连接,结果以字符串形式输出。
比方说:var a=1,b=2;
document.write(a+b)结果为3
document.write(a+b+""))结果为12
JavaScript进阶篇
468062 学习 · 21891 问题
相似问题