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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
jquery中的sortable排序之后的保存状态的解决方法
Jan 28 Javascript
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
JavaScript数字和字符串转换示例
Mar 26 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
JS实现横向跑马灯效果代码
Apr 20 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 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
Python subprocess模块常见用法分析
2018/06/12 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python实现图片转字符小工具
2019/04/30 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
Python如何将字符串转换为日期
2020/07/31 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
行政助理岗位职责
2013/11/10 职场文书
给同事的道歉信
2014/01/11 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
建筑安全责任书范本
2014/07/24 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
刮痧观后感
2015/06/05 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
Python使用MapReduce进行简单的销售统计
2022/04/22 Python