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 相关文章推荐
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
Feb 05 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
详解微信小程序Radio选中样式切换
Jul 06 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
详解angularjs4部署文件过大解决过程
Dec 05 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
浅谈克隆 JavaScript
Nov 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Python Celery多队列配置代码实例
2019/11/22 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
电子商务个人职业生涯规划范文
2014/02/12 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
先进基层党组织材料
2014/12/25 职场文书
欢迎词怎么写
2015/01/23 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
个人向公司借款协议书
2016/03/19 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL