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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的反射机制带来的好处_线程安全与线程不安全

    java的反射机制带来的好处_线程安全与线程不安全什么是反射Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法jdbc(数据库连接技术)在加载驱动时运用到了反射技术例如:实例化对象第一种:Personp=newPerson()虚拟机在执行的时候已经确切知道要实例化哪个类的对象第二种:反射:虚拟机在实例化对象的时候,可以事先不知道要实例化哪个类的对象,传参的时候虚拟机根据参数确定要实例化哪个类的

    2022年8月24日
    5
  • Eclipse自动补全设置(终极方案)

    Eclipse自动补全设置(终极方案)Eclipse自动补全、字体、护眼色、tomcat、导包1.设置字体2.设置护眼色3.设置自动补全4.配置Tomcat服务器5.配置默认JSP编码6.无法导包解决方案1.设置字体2.设置护眼色3.设置自动补全26字母和”.”均会提示:Java和Java类型补全建议+26字母异常强大的补全提示:4.配置Tomcat服务器5.配置默认JSP编码6.无法导包解决方案…

    2022年6月28日
    28
  • (CVE-2014-0160) OpenSSL 心脏滴血漏洞

    (CVE-2014-0160) OpenSSL 心脏滴血漏洞Heartbleed心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过滤,即可以读取的数据比应该允

    2022年7月17日
    17
  • 【ClassLoader】实现自定义类加载器加载指定路径下的Class文件和Jar包[通俗易懂]

    【ClassLoader】实现自定义类加载器加载指定路径下的Class文件和Jar包[通俗易懂]自定义类加载器:1.加载指定目录下的.class文件2.加载指定目录下的jar包

    2025年9月21日
    5
  • python做物联网(物联网技术应用)

    开篇Python作为一门快速发展的解释性编程语言,数以百万计的开发者已经将Python应用在人工智能、游戏开发、数据挖掘、信息安全、系统运维等行业并取得了成功。现如今,一大批国内外头部IoT解决方商正在尝试将Python引入物联网/智能硬件开发行业,部分支持python语言的物联网开发板和模组也陆续面试。例如阿里云智能推出的HaaS开发板,树莓派推出的RaspberryPiPico开发板等。那么,物联网设备会是Python的下一…

    2022年4月12日
    100
  • mariadb安装教程linux,在Ubuntu 18.04系统上安装MariaDB 10.4的步骤「建议收藏」

    mariadb安装教程linux,在Ubuntu 18.04系统上安装MariaDB 10.4的步骤「建议收藏」以下介绍在Ubuntu18.04系统上安装MariaDB10.4,也适用在Ubuntu16.04系统上,我们可以从APT存储库在Ubuntu上安装MariaDB10.4。MariaDB是MySQL的直接替代品,具有更多功能,新存储引擎和更好的性能。在写本文时,MariaDB10.4可在Beta版本中使用了,如果你想使用正式版本,就用MariaDB10.3。相关链接在Ubuntu18….

    2022年5月27日
    94

发表回复

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

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