JavaScript编程中容易出BUG的几点小知识

 更新时间:2015年01月31日 10:25:20   投稿:junjie  
这篇文章主要介绍了JavaScript编程中容易出BUG的几点小知识,本文总结了8条小知识,这些小知识如果弄不明白,会在编程中给你惹麻烦出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 函数

复制代码 代码如下:

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

相关文章

  • 浅谈TypeScript的类型保护机制

    浅谈TypeScript的类型保护机制

    这篇文章主要介绍了浅谈TypeScript的类型保护机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • JS中的提升机制变量提升函数提升实例详解

    JS中的提升机制变量提升函数提升实例详解

    这篇文章主要为大家介绍了JS中的提升机制变量提升函数提升实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • echartjs实现cross十星辅助线实现示例详解

    echartjs实现cross十星辅助线实现示例详解

    这篇文章主要为大家介绍了echartjs实现cross十星辅助线实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • javascript中的some方法使用解读

    javascript中的some方法使用解读

    这篇文章主要介绍了javascript中的some方法使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 如何通过setTimeout理解JS运行机制详解

    如何通过setTimeout理解JS运行机制详解

    这篇文章主要给大家介绍了关于如何通过setTimeout理解JS运行机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 百度判断手机终端并自动跳转js代码及使用实例

    百度判断手机终端并自动跳转js代码及使用实例

    这篇文章主要介绍了百度判断手机终端并自动跳转js代码及使用实例,需要的朋友可以参考下
    2014-06-06
  • JavaScript禁止微信浏览器下拉回弹效果

    JavaScript禁止微信浏览器下拉回弹效果

    这篇文章主要为大家详细介绍了JavaScript禁止微信浏览器下拉回弹效果的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JavaScript中split() 使用方法汇总

    JavaScript中split() 使用方法汇总

    本文向大家重点讲解一下Javascript中split函数使用,它可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回,相信本文介绍你对split函数的用法有明确的认识。
    2015-04-04
  • javascript中callee与caller的区别分析

    javascript中callee与caller的区别分析

    有些小伙伴可能会问caller,callee 是什么?在javascript 中有什么样的作用?那么本篇会对于此做一些基本介绍。希望能够对大家理解javascript中的callee与caller有所帮助。
    2015-04-04
  • 使用javascript实现一个在线RGB颜色转换器

    使用javascript实现一个在线RGB颜色转换器

    目前已经有很多网页版在线小工具,之前很多窗体化的工具也逐渐网页化,比如:PS画图软件,也都能直接网页化进行设计,由于自己实际项目经常会用到颜色转换,所以直接自己开发个简单版的在线颜色转换小工具,需要的朋友可以参考下
    2024-01-01

最新评论