当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 帮助避免错误的Javascript陷阱清单

Javascript
可实现多表单提交的javascript函数
比较详细的关于javascript中void(0)的具体含义解释
随机显示经典句子或诗歌的javascript脚本
javascript实现的多条新闻公告系统
解析arp病毒背后利用的Javascript技术附解密方法
比较详细的javascript对象的property和prototype是什么一种关系
访问百度和谷歌网速测试的javascript代码
javascript 动态改变层的Z-INDEX的代码style.zIndex
javascript+css实现单击颜色褪去效果
javascript 表单日期选择效果
比较简单的javascript实现input双击后可以编辑
javascript实现的颜色块滑动的动态效果
js实现网页检测是否安装了 Flash Player 插件
javascript 实现父窗口引用弹出窗口的值的脚本
javascript 实现双击才能打开链接的方法
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
document.createElement("A")比较不错的属性
用javascript实现不按Ctrl实现Multiple Select多选
JavaScript-世界上误解最深的语言分析
IE和Mozilla的兼容性汇总event

帮助避免错误的Javascript陷阱清单


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 322 ::
收藏到网摘: n/a

帮助避免错误的Javascript陷阱清单(Javascript Gotchas listed to help avoid mistakes)

翻译讲究"信\雅\达",我就谈不上了.希望能把文章的意思不要弄错就行.

编程的陷阱(gotcha)是指计算机系统中的意想不到的文档特征而不是bug.这些陷阱使得初学者远离javascript编程.在我看来,因为所有的浏览器都能运行javascript使得它是使用最广泛的语言之一,但它也是最少人研究的.让我们从一个基础的示例开始.

1.浮点运算

这可能是挫败一些对javascript不熟悉并准备执行一些数学运算的人的主要原因.

  1. <script>
  2. alert(0.02 / 0.1); //0.19999999999999998
  3. alert(1.14 * 100); //113.99999999999999 ;)
  4. </script>

Math.round()就能在这里派上用场.

2.加号操作符的重载

"+"加号运算符即能做算术运算,又能够做字符串的连接.如果正确的使用它是很便利的.让我们看一看.

  1. <script>
  2. var msg, one="1";
  3. msg = 2 + "1"; // msg = "21"
  4. msg = 2 + one; // msg = "21"
  5. msg = 1 + 1 + 1 + " musketeers"; // msg = "3 musketeers"
  6. msg = "Bond " + 0 + 0 + 7; //msg = "Bond 007"
  7. </script>

上述行为是因为这些运算都是从左到右执行的.类型的转换是基于其中的字符串或数字.

3.行尾插入分号

javascript 自动在行尾插入分号";",让我们来看看这在一个简单的示例中的情况.

  1. <script>
  2. function returnSame(a){
  3. return //Inserts semi-colon to convert to return;
  4. a //a becomes a; - Unreachable
  5. }
  6. alert(returnSame(2)); //Output is undefined
  7. </script>

当在创建对象或使用对象的值的时候这个神奇的分号能使事情变得更复杂.

4.typeof操作符

typeof 是一个一元操作符,运算结果往往并不是如预期的那样.令人吃惊的是对"null"的运算结果是"object"

  1. <script>
  2. var obj={}; //object created using object literal
  3. var arr=[]; //array created by array literal
  4. alert(typeof(obj)); //object - Good
  5. alert(typeof(arr)); //object - Bad
  6. alert(typeof(null)); //object - Ugly! ;)
  7. </script>

它仅仅能查找对象的原始类型.

5. false, null, undefined, NaN, Infinity

尽管他们看起来相似,但他们代表着不通的意思.javascript有3种基本数据类型数字numbers, 字符串strings 和布尔 boolean,除此之外还有两个不重要的数据类型"undefine"和"null".按照"=="运算符运算,null和undefine是相等的.

  1. <script>
  2. var a;
  3. alert (a); //undefined
  4. alert (1/0); //Infinity
  5. alert (0/0); //NaN
  6. 0/0 == 0/0; //false - a NaN != NaN
  7. alert (b); //error
  8. </script>

6.字符串只替换第一个匹配的字符

与PHP或其他程序语言不同,默认情况下,javascript的字符替换只替换第一个出现的匹配的字符.

  1. <script>
  2. var nospace = "I dont need spaces".replace(" ","_");
  3. alert(nospace); //I_dont need spaces - Only first occurence
  4. var nospace = "I dont need spaces".replace(/ /g,"_");
  5. alert(nospace); //I_dont_need_spaces
  6. </script>

7.parseInt 函数

parseInt 用来将一个字符串转换为整数类型.这个函数能传入两个参数,第二个参数是指定多少进制的.这里十进制用 10 指定.如果没有指定进制,则parseInt函数自己会试图找到合适的进制.如果是这样,以0开头的字符串将会转换为8进制.

  1. <script>
  2. var str = "017";
  3. var strInt = parseInt(str); //strInt = 15 ;)
  4. var strInt = parseInt(str,10); //strInt = 17
  5. </script>