JavaScript编程中容易出BUG的几点小知识
作者:bea
JavaScript是如今最受欢迎的编程语言之一,但受欢迎同时就是该语言自身的各种特性带来的副作用,无论该语言多美妙,每天还是有成千上万的程序员弄出一堆bug。先不要嘲笑别人,或许你也是其中之一。 给你一个例子,下面是几个简短的完全有效的JS片段(你可以在你的控制台上试验一下): 代码如下: typeof NaN === 'number' // true Infinity === 1/0 // true 0.1 + 0.2 === 0.3 // false,前
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
有用 | 无用
给你一个例子,下面是几个简短的完全有效的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
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery动画与特效详解
- jquery制作 随机弹跳的小球特效
- jQuery实现单击和鼠标感应事件
- jquery制作LED 时钟特效
- thinkphp 表名 大小写 窍门
- javascript实现带节日和农历的日历特效
- 2种jQuery 实现刮刮卡效果
- jQuery实现炫酷的鼠标轨迹特效
- jQuery+CSS3实现树叶飘落特效
- jquery实现勾选复选框触发事件给input赋值
- jQuery结合HTML5制作的爱心树表白动画
- jquery实现炫酷的叠加层自动切换特效
- JavaScript插件化开发教程(六)
- JavaScript插件化开发教程(五)
- 对JavaScript中this指针的新理解分享
- IE下支持文本框和密码框placeholder效果的JQuery插件分享
- 有效提高JavaScript执行效率的几点知识
- JavaScript日期时间与时间戳的转换函数分享
- JavaScript监听和禁用浏览器回车事件实例