javascript的一些bug建议收藏

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120758.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jvm最全详解-05-JVM调优工具详解及调优实战[通俗易懂]

    jvm最全详解-05-JVM调优工具详解及调优实战[通俗易懂]jvm最全详解-05-JVM调优工具详解及调优实战前置启动程序事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小jmap-histo14660#查看历史生成的实例jmap-histo:live14660#查看当前存活的实例,执行过程中可能会触发一次fullgc打开log.txt,文件内容如下:num:序号 instances:实例数量 b..

    2022年5月31日
    40
  • Java学习之数据库连接池

    Java学习之数据库连接池0x00前言前面用到的jdbc,在每次连接数据库的时候都需要去重新建立对象。我们在这里会用到创建一个连接池,每次使用完后归还给连接池。0x01连接池概述连接池其实

    2021年12月12日
    38
  • Spring中的AOP以及切入点表达式和各种通知

    Spring中的AOP以及切入点表达式和各种通知上篇讲了动态代理:Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别我们用上篇的做法去实现目标方法的增强,实现代码的解耦,是没有问题的,但是还是需要自己去生成代理对象,自己手写拦截器,在拦截器里自己手动的去把要增强的内容和目标方法结合起来,这用起来还是有点繁琐,有更好的解决方案吗?答案是:有的!那就是Spring的AOP,这才是咱们最终想引出来的重点!有了Sprin…

    2022年7月27日
    8
  • 使用npm安装yarn命令

    使用npm安装yarn命令’yarn’不是内部或外部命令,也不是可运行的程序或批处理文件。解决方法:全局安装:npminstall-gyarn检查是否安装成功:yarn-v

    2022年5月23日
    66
  • C语言中什么是常量表达式_c语言整型表达式

    C语言中什么是常量表达式_c语言整型表达式常量表达式c语言,整型表达式和常量表达式中都没有变量参与吧?完整问题:好评回答:表达式没有变量参与?不是很清楚这个问题的定义,只是知道(ab)这种表达式下a和b都可以是变量Java编译器对于String常量表达式的优化是什么呢?完整问题:Java编译器对于String常量表达式的优化是什么呢?好评回答:首先把问题摆出来,先看这个代码Stringa=”ab”;Stringb=”a”…

    2022年9月29日
    1
  • ubuntu 安装Qt Creator

    ubuntu 安装Qt Creator转载地址:http://my.phirobot.com/blog/2013-12-ros_ide_qtcreator.htmlQt下载地址: http://download.qt.io/archive/ROS开发环境之QtCreatorCreatedat: 2013-12-29T00:00:00  YuanboShe  ROS  turtlebot, ros, qt,可以用于ROS开发的…

    2022年9月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号