javascript的一些bug

时间:2023-03-09 02:22:48
javascript的一些bug

JavaScript是如今最受欢迎的编程语言之一,但受欢迎同时就是该语言自身的各种特性带来的副作用,无论该语言多美妙,每天还是有成千上万的程序员弄出一堆bug。先不要嘲笑别人,或许你也是其中之一。

给你一个例子,下面是几个简短的完全有效的JS片段(你可以在你的控制台上试验一下):

typeof NaN === 'number' // true

Infinity === 1/0        // true

0.1 + 0.2 === 0.3       // false,前面加括号也一样

"3" + 1                 // '31'
"3" - 1 //

你还相信自己的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'); //
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在同一行

/********   ********* /
博客:http://www.cnblogs.com/roucheng/
/ ******* *********/

6、奇怪的数字

 012  == 12  // false
'012' == 12 // true
"3" + 1 // '31'
"3" - 1 //
0.1 + 0.2 === 0.3 // false
9999999999999999 //
111111111111111111111 //

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