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 密码强度判断代码
Sep 05 Javascript
JavaScript 对Cookie 操作的封装小结
Dec 31 Javascript
如何在一个页面显示多个百度地图
Apr 07 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
详解Angular.js中$http拦截器的介绍及使用
Jul 04 Javascript
vue增删改查的简单操作
Jul 15 Javascript
highcharts 在angular中的使用示例代码
Sep 20 Javascript
React Native基础入门之调试React Native应用的一小步
Jul 02 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
150行Node.js实现的dns代理工具
Aug 02 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 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
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
php封装的page分页类完整实例
2016/10/18 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
python变量的作用域是什么
2020/05/26 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
财务情况说明书范文
2014/05/06 职场文书
环保倡议书100字
2014/05/15 职场文书
后勤工作个人总结
2015/02/28 职场文书
驳回起诉裁定书
2015/05/19 职场文书
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android