首页 > Web开发 > 详细

js中一些小知识点总结--持续更新

时间:2016-02-28 11:05:47      阅读:337      评论:0      收藏:0      [点我收藏+]

以下知识点来自于编写高质量代码-改善JavaScript程序的188个建议,只用于自我知识的补充。

 

一.NaN

1.NaN是一个特殊的数量值,不表示一个数字,尽管下面的代码仍然是返回类型为number

console.log(typeof NaN);//number
console.log(typeof NaN===‘number‘);//true

可见typeof不能真正区分数字与NaN的区别。

为了进一步区分NaN与数字,可以使用isFinite函数,如果有限数值,该函数将返回true,如果是NaN、正负无穷大的数值,则返回false。

 

2.关于NaN的运算规则:

  • 如果NaN是数学运算中的一个运算数,那么它与其他运算数的运算结果就会是NaN
  • NaN===NaN;//false;(我自己就理解成虽然不是number,但不是number的有好多,也一定不会都相等)
  • NaN!==NaN;//true;

 

二.null与undefined:

1.以下代码结果:

console.log(null==undefined);//true
console.log(null!=undefined);//false;
console.log(null===undefined);//true
console.log(null!==undefined);//false

 

2.null是保留字,undefined不是保留字。

 

3.undefined的值在如下情况下出现:

  • 从一个对象中获取某个属性,如果该对象及其原型链中的对象都没有该属性,该属性的值为undefined。
  • 一个函数没有显示通过return语句将返回值范湖给其调用者,其返回值就是undefined,但在使用new调用函数时例外。
  • javascript的函数可以是用声明任意多个形参,当该函数实际被调用时,传入的参数的个数如果小于声明的形式参数的个数,那么多余的形式参数的值就是undefined

 

三.==与===

1.==与!=缺乏传递性

 

2.===运算符算法:x===y,先比较两个值的类型是不是相等,如果不相同,直接返回false。如果类型相同,则根据x的类型展开如下算法

  • 如果x的类型是Undefined或Null,则返回true,例如:null===undefined;//true
  • 如果x的类型是number,只要其中有一个NaN,则返回false;如果x与y数字值相等,就返回true;如果x或y中有一个是+0,另外一个数是-0,则返回true
  • 如果x的类型是String,当x和y的字符序列完全相同的时候返回true
  • 如果x的类型是Boolean,当x和y同为true或者同为false时返回true,否则返回false
  • 如果x和y引用相同的对象时返回true,否则为false

 

3.==运算符算法:x==y,如果x与y是同一类型,判断方式与===一样,如果x和y类型不一样,==会按照进行一定的类型转换:

  • 如果x和y中有一个null,另外一个是undefined,返回true
  • 如果x和y中有一个是String,另一个Number类型,会将String类型转化为Number,例如:

    console.log(‘‘==‘0‘);//false
    console.log(0==‘‘);//true
    console.log(0==‘0‘);//true
    console.log(‘‘===‘0‘);//false

  • 如果x和y中有一个类型是Boolean,会将Boolean类型转化成Number比较,例如:

    console.log(true==‘1‘);//
    console.log(true==1);//
    console.log(true==‘2‘);//就是1, 2都不可以
    console.log(true==2);//

  • 如果x和y中有一个类型是String或Number,另外一个是Object,会将类型的值转换成基本类型来比较,例如[3,4]=="3,4"。

4.

console.log(false==‘fasle‘);//false:类型不同就返回false
console.log(false==‘0‘);//true:有一个参数boolean值,将其转换为number为0,当0与“0”进行比较的时候,根据第二条规则,就会将“0”转换为0,所以返回true
console.log(false==undefined);//false:类型不同就返回false
console.log(false==null);//false:类型不同就返回false

console.log(false=="");//true

 

四.逗号运算符

1.var a=1,2,3,4;

   console.log(a);//报错,一个变量的重复定义

 

  var a=(1,2,3,4);

  console.log(a);//4,通过逗号运算符返回最后一个运算结果

js中一些小知识点总结--持续更新

原文:http://www.cnblogs.com/yangxiaoguai132/p/5224214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!