zoukankan      html  css  js  c++  java
  • 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                 // 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 函数

    1 parseInt('06'); // 6
    2 parseInt('08'); // 0  注意,谷歌新版已修正
    3 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     // 2
    0.1 + 0.2 === 0.3 // false
    9999999999999999 // 10000000000000000
    111111111111111111111 // 111111111111111110000

    7、诡异的参数

    function hello(what) {
         alert(arguments[0]);    //vicky
         what = "world";
         return "Hello, " + arguments[0] + "!";
    }
    
    hello("vicky"); //"Hello, world!"

    8、让人头大的等号

     1 NaN === NaN;   // false
     2 [] == false;   // true
     3 "" == false;   // true
     4 null == false; // false
     5 [] == ![]      // true
     6 
     7 window.window == window  // true
     8 window.window === window // false,有些浏览器是true
     9 window == document       // true,有些浏览器是false
    10 
    11 ("0" && {}) == 0 // false
    12 (0 && {}) == 0   // true
    13 0 == "0"         // true
    14 [] == 0          // true
  • 相关阅读:
    过滤评论中的表情
    谈谈你对多进程,多线程,以及协程的理解
    什么是多线程竞争?
    解释以下什么是锁,有哪几种锁?
    .什么是死锁
    多线程交互访问数据,如果访问到了就不访问了?
    什么是线程安全,什么是互斥锁
    说说下面几个概念:同步,异步,阻塞,非阻塞?
    什么是僵尸进程和孤儿进程?怎么避免僵尸进程?
    python中进程与线程的使用场景
  • 原文地址:https://www.cnblogs.com/roucheng/p/3488419.html
Copyright © 2011-2022 走看看