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 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
详解堆的javascript实现方法
Nov 29 Javascript
Node.js连接MongoDB数据库产生的问题
Feb 08 Javascript
探索webpack模块及webpack3新特性
Sep 18 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
javascript触发模拟鼠标点击事件
Jun 26 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
php搜索文件程序分享
2015/10/30 PHP
php微信支付接口开发程序
2016/08/02 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
python实现ftp客户端示例分享
2014/02/17 Python
Python3基础之基本运算符概述
2014/08/13 Python
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python开启debug模式的方法
2019/06/27 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
Python 多进程、多线程效率对比
2020/11/19 Python
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
法警的竞聘演讲稿
2014/01/02 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL