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


Posted in Javascript onJanuary 31, 2015

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
Javascript 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
js编码、解码函数介绍及其使用示例
Sep 05 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
深入理解JavaScript中的尾调用(Tail Call)
Feb 07 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 #Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 #Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 #Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 #Javascript
jQuery知识点整理
Jan 30 #Javascript
浅谈jquery回调函数callback的使用
Jan 30 #Javascript
jQuery修改class属性和CSS样式整理
Jan 30 #Javascript
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
this关键字的作用
2016/01/30 面试题
办公室岗位职责
2014/02/12 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
环境科学专业求职信
2014/08/04 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python