翻译讲究"信/雅/达",我就谈不上了.希望能把文章的意思不要弄错就行.
编程的陷阱(gotcha)是指计算机系统中的意想不到的文档特征而不是bug.这些陷阱使得初学者远离javascript编程.在我看来,因为所有的浏览器都能运行javascript使得它是使用最广泛的语言之一,但它也是最少人研究的.让我们从一个基础的示例开始.
1.浮点运算
这可能是挫败一些对javascript不熟悉并准备执行一些数学运算的人的主要原因.
- <script> alert(0.02 / 0.1); //0.19999999999999998
- alert(1.14 * 100); //113.99999999999999 ;) </script>
Math.round()就能在这里派上用场.
2.加号操作符的重载
"+"加号运算符即能做算术运算,又能够做字符串的连接.如果正确的使用它是很便利的.让我们看一看.
- <script> var msg, one="1";
- msg = 2 + "1"; // msg = "21" msg = 2 + one; // msg = "21"
- msg = 1 + 1 + 1 + " musketeers"; // msg = "3 musketeers" msg = "Bond " + 0 + 0 + 7; //msg = "Bond 007"
- </script>
上述行为是因为这些运算都是从左到右执行的.类型的转换是基于其中的字符串或数字.
3.行尾插入分号
javascript 自动在行尾插入分号";",让我们来看看这在一个简单的示例中的情况.
- <script> function returnSame(a){
- return //Inserts semi-colon to convert to return; a //a becomes a; - Unreachable
- } alert(returnSame(2)); //Output is undefined
- </script>
当在创建对象或使用对象的值的时候这个神奇的分号能使事情变得更复杂.
4.typeof操作符
typeof 是一个一元操作符,运算结果往往并不是如预期的那样.令人吃惊的是对"null"的运算结果是"object"
- <script> var obj={}; //object created using object literal
- var arr=[]; //array created by array literal alert(typeof(obj)); //object - Good