JavaScript编程中容易出BUG的几点小知识

JavaScript是如今最受欢迎的编程语言之一,但受欢迎同时就是该语言自身的各种特性带来的副作用,无论该语言多美妙,每天还是有成千上万的程序员弄出一堆bug。先不要嘲笑别人,或许你也是其中之一。
给你一个例子,下面是几个简短的完全有效的JS片段(你可以在你的控制台上试验一下):

typeof NaN === 'number' // true 
Infinity === 1/0        // true
0.1 + 0.2 === 0.3       // false,前面加括号也一样
"3" + 1                 // '31'  
"3" - 1                 // 2

你还相信自己的JavaScript吗?
1、JS最小的值

Number.MIN_VALUE > 0; //true
Number.MIN_VALUE用于JavaScript可以表达的最小值,为5e-324,然而是JS中最接近0的一个数

2、字符串连接

("foo" + + "bar") === "fooNaN"  //true
"why I am " + typeof + ""       // why I am number

JS解析成“foo” + (+ “bar”), 这将会把 “bar” 转成一个数字
3、parseInt 函数

parseInt('06'); // 6
parseInt('08'); // 0  注意,谷歌新版已修正
parseInt(null, 24) === 23 // true

4、null是不是object

typeof null  // object
null instanceof Object  // false

5、return返回内容

function myjson(){  
  return   
  [     2   ]
}
myjson();  // undefined

return返回的内容必须和return在同一行
6、奇怪的数字

 012  == 12  // false
'012' == 12  // true
 "3" + 1     // '31'
 "3" - 1     // 2
0.1 + 0.2 == 0.3 // false
0.1 + 0.7 == 0.8 // false
0.2 + 0.7 == 0.9 // false
9999999999999999 // 10000000000000000
9999999999999999-1 //10000000000000000
111111111111111111111 // 111111111111111110000

7、诡异的参数

function hello(what) {    
  alert(arguments[0]);    //vicky     
  what = "world";    
  return "Hello, " + arguments[0] + "!";
}
hello("vicky"); //"Hello, world!"

8、让人头大的等号

NaN === NaN;   // false
[] == false;   // true
"" == false;   // true
null == false; // false
[] == ![]      // true
window.window == window  // true
window.window === window // false,有些浏览器是true
window == document       // true,有些浏览器是false
("0" && {}) == 0 // false
(0 && {}) == 0   // true
0 == "0"         // true
[] == 0          // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock阅读 8,645评论 2 36
  • R: 开始动笔,练习之二:凭借直觉 这是一个训练写作的练习,包括七个步骤,每一步都要单独进行。确认你已经完成了一个...
    安彦妮阅读 1,358评论 0 0
  • 一起刷过的数学卷子 记忆犹新 英语老师每次批评我的时候 你在那幸灾乐祸 唯一坚持下来的事 在你的历史书上写完了所有...
    之丹阅读 1,196评论 0 0
  • 衷心祈愿 您和您的家人 幸福安康 福慧增长 一切善愿悉皆成就 一切事业无有魔障
    菩提哆啦阅读 1,072评论 2 1