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脚本代码跑起来。
Jan 09 Javascript
jQuery EasyUI NumberBox(数字框)的用法
Jul 08 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
浅谈$('div a') 与$('div>a')的区别
Jul 18 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
js无提示关闭浏览器窗口的两种方法分析
Nov 06 Javascript
ajax级联菜单实现方法实例分析
Nov 28 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
vue获取DOM元素并设置属性的两种实现方法
Sep 30 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
Vue.js实现大转盘抽奖总结及实现思路
Oct 09 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/12/29 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP7.0版本备注
2015/07/23 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
js删除所有的cookie的代码
2010/11/25 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
python实现二维数组的对角线遍历
2019/03/02 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
小学教师师德承诺书
2014/05/23 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis