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 相关文章推荐
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
jQuery :first选择器使用介绍
Aug 09 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
JQuery实现展开关闭层的方法
Feb 17 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
js中数组的常用方法小结
Dec 30 Javascript
javaScript嗅探执行神器-sniffer.js
Feb 14 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
Jun 29 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
Vue基础学习之项目整合及优化
Jun 02 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
js中开关变量使用实例
2017/02/24 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python os.fork() 循环输出方法
2019/08/08 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
python实现简单猜单词游戏
2020/12/24 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
企业门卫岗位职责
2013/12/12 职场文书
青年志愿者活动总结
2014/04/26 职场文书
出售房屋委托书范本
2014/09/24 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
期中考试复习计划
2015/01/19 职场文书
房贷工资证明范本
2015/06/12 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python