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 相关文章推荐
用javascript实现给图片加链接
Aug 15 Javascript
document.compatMode介绍
May 21 Javascript
页面版文本框智能提示JS代码
Nov 20 Javascript
jQuery给动态添加的元素绑定事件的方法
Mar 09 Javascript
js通过iframe加载外部网页的实现代码
Apr 05 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
jQuery常用选择器详解
Jul 17 jQuery
vue中引入第三方字体文件的方法示例
Dec 17 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
May 25 Javascript
Javascript设计模式之原型模式详细
Oct 05 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
PDO::commit讲解
2019/01/27 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python写程序统计词频的方法
2019/07/29 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
Python单链表原理与实现方法详解
2020/02/22 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
.NET方向面试题
2014/11/20 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
关于环保的建议书400字
2014/03/12 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
新闻学专业求职信
2014/07/28 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
2015年教师节感言
2015/08/03 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
分析Netty直接内存原理及应用
2021/06/14 Java/Android
SQL Server表分区删除详情
2021/10/16 SQL Server