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 统计时间
Mar 09 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
Apr 25 Javascript
Javascript复制实例详解
Jan 28 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 Javascript
javascript中apply/call和bind的使用
Feb 15 Javascript
前端自动化开发之Node.js的环境搭建教程
Apr 01 Javascript
微信小程序富文本渲染引擎的详解
Sep 30 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
Oct 24 Javascript
原生JS中应该禁止出现的写法
May 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
PHP下常用正则表达式整理
2010/10/26 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php判断linux下程序问题实例
2015/07/09 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
javascript实现yield的方法
2013/11/06 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
Python2.x与Python3.x的区别
2016/01/14 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
如何理解Python中包的引入
2020/05/29 Python
python如何求圆的面积
2020/07/01 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
印度在线购物网站:Paytmmall
2019/07/24 全球购物
奥巴马演讲稿
2014/01/08 职场文书
家长给孩子的评语
2014/01/30 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
国际会计专业求职信
2014/08/04 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
答谢酒会主持词
2015/07/02 职场文书
高考升学宴主持词
2019/06/21 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers