“一加一等于几?”变量类型转换

一加一看起来是个非常简单的问题,可是实际上在程序中,常常会出现程序员无法预料的各种状况。

【实例】代码3-2.htm试图计算用户两次输入的数字之和。

代码3-2.htm   计算用户两次输入的数字之和

 
 
  1. 01  <html> 
  2. 02  <head> 
  3. 03  <meta http-equiv="content-type" content="
    text/html; charset=GB2312"
     /> 
  4. 04  <title>3-2  一加一等于几?</title> 
  5. 05  </head> 
  6. 06  <body style="overflow:auto; padding:0px; margin:0px;"> 
  7. 07  <div style="font-size:14px; font-weight:bold;
    color:white; font-family:Arial, 宋体;   
  8. 08  background-color:#6090DA; padding:4px 10px;"> 
  9. 09      <script> 
  10. 10          intA = prompt("请输入第一个数字",1);  
  11. 11          intB = prompt("请输入第二个数字",1);  
  12. 12          document.write("你输入的第一个数字是"+intA);  
  13. 13          document.write("<br>你输入的第二个数字是"+intB);  
  14. 14          document.write("<br>两者和是"+(intA+intB));  
  15. 15      </script> 
  16. 16  </div> 
  17. 17  </body> 
  18. 18  </html> 

【代码说明】为什么程序会认为1+1=11?其实细心的读者应该会注意到,本章最初介绍prompt函数的时候说过,该函数会“将用户的输入作为字符串返回”。而且对于字符串来说,操作符“+”的含义并不是相加,而是将字符串连接起来。因此,在代码3-2.htm运行的时候,通过prompt获得的两次用户输入“1”被直接连接起来,得到运算结果“11”。

【运行效果】假设用户两次输入的数字都是1,程序运行的结果是11.

JavaScript是一种弱类型语言。也就是说,不需要显式地声明各个变量的类型,JavaScript会自己决定变量在表达式中所扮演的“角色”。那么应该怎么解决变量类型的问题呢?表3.2是JavaScript内置的一些函数,用来实现变量类型的转换。

表3.2   用于转换变量类型的函数

 

比较代码3-1.htm和代码3-2.htm可以看出,代码3-1.htm使用parseInt将用户两次的输入转换为整形数值,并且用括号改变运算顺序,让数字相加的运算的操作优先执行。

【实例3.2】有时候,JavaScript自己决定变量类型也会产生出乎意料的错误。读者请阅读代码3-3.htm,并思考运行的结果是什么?

代码3-3.htm   JavaScript自动类型转换

 
 
  1. <html> 
  2. 01  <head> 
  3. 02  <meta http-equiv="content-type" content="
    text/html; charset=GB2312"
     /> 
  4. 03  <title>3-3  JavaScript自动类型转换</title> 
  5. 04  </head> 
  6. 05  <body style="overflow:auto; padding:0px; margin:0px;"> 
  7. 06  <div style="font-size:14px; font-weight:bold; 
    color:white; font-family:Arial, 宋体;   
  8. 07  background-color:#6090DA; padding:4px 10px;"> 
  9. 08      <script> 
  10. 09          document.write("1+1的结果是"+1+1);  
  11. 10          document.write("<br>3*3的结果是"+3*3);  
  12. 11      </script> 
  13. 12  </div> 
  14. 13  </body> 
  15. 14  </html> 

【代码说明】代码3-3.htm中,在计算1+1的时候,虽然两个常量都是整形的数值“1”,但是JavaScript按照操作符优先级相同时,自左至右的顺序,首先处理字符串“"1+1的结果是"+1”。JavaScript解释器认为这是字符串的连接,于是自动将常数“1”转变成了字符串类型。在计算3*3的时候,因为操作符“*”的优先级高于“+”,“3*3”的计算得以优先执行,于是得到了图3.4的结果。

【运行结果】运行的结果如图3.4所示


 
JavaScript 中的字符串也是一种对象,有着自己的属性和方法。
例如:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>3-4  字符串对象常用方法使用示例</title>
</head>
<body style="overflow:auto; padding:0px; margin:0px;">
<div style="font-size:14px; font-weight:bold; color:white; font-family:Arial, 宋体; background-color:#6090DA; padding:4px 10px;">
    <script>
        document.write("big的效果".big());
        document.write("<br>bold的效果".bold());
        document.write("<br>fontsize=5的效果".fontsize("5"));
        document.write("<br>A的Unicode编码是"+"A".charCodeAt(0));
        document.write("<br>Unicode编码为70的字符是"+String.fromCharCode(70));
        document.write("<br>Test toLowerCase".toLowerCase());
        document.write("<br>Test toUpperCase".toUpperCase());

    </script>
</div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值