红宝书笔记-数据类型

2017-12-10  本文已影响9人  拾起落叶好过冬

数据类型

使用typeof判断类型注意点

typeof可以用来判断数据类型,但是,对于复杂类型无能为力,比如

typeof null //object

typeof /^abc$/ //object

typeof [1,2,3] //object

typeof new Date() //object

typeof undefined //undefined

typeof function(){return 1;} //function

可以看到,null、数组、正则、日期几种类型都返回object,若完美判断类型最好使用Object.prototype.toString.call 的方法。

undefined 和 null

undefined表示定义的变量未赋予任何值,自动会得到undefined。
但注意区别

var message;
console.log(message);   //undefined;
console.log(info);  //报错 info is not defined

以上,message变量声明了,但没有手动赋值,因此自动得到了undefined,但是info变量连声明都没有,所以是会报错的。

为什么undefined == null为真?

原理是因为在javascript中,undefined值派生自null,因此ECMA-262规定它们相等

对象转布尔值的规则

javascript中任何一种类型都能转换为布尔(boolean)值,转换的规则如下:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""空字符串
Number 任何非零数字(包括无穷大) 0 和 NaN
Object 任何对象 null
Undefined 不适用 undefined

举几个栗子:

Boolean({});        //true
Boolean(null);      //false
Boolean(undefined); //false
Boolean(100);       //true
Boolean(Infinity);  //true
Boolean(NaN);       //false

Number数值类型

浮点数的计算

在javascript中,小数点右侧有值才会当做浮点数处理,比如1.2,如果小数点右则无值或是0,都当做整数来处理如:1.0。

javascript中由于使用IEEE754来处理浮点数,因此千万不要使用浮点数计算后的结果进行比较!举个栗子:

0.1+0.2 //0.30000000000000004

并不是你想象的0.3。

NaN

NaN在javascript中是一个特殊的数值,表示“不是一个数字”(Not a Number),javascript中引入NaN是为了处理数值操作返回未知的情况,这样就不会抛出错误终止程序运行了(比如java就会抛错)。

0/0 //0除0,的结果是NaN
Number('hello') //转换数值类型失败时也是NaN

NaN与任何值进行计算还是NaN

NaN + 1 //NaN

NaN与任何值比较都不相等,自己也是

NaN == false    //false
NaN == 0        //false
NaN == 1        //false
NaN == null     //false
NaN == NaN      //false

若想判断是不是NaN,应使用isNaN()函数

数值转换

转换为数值类型有几个规则

  1. 如果是布尔值,true转为1,false转为0
  2. 如果是数值,直接返回
  3. 如果是null,转为0
  4. 如果是undefined,转为NaN
  5. 如果是字符串,比较复杂,有以下规则:
    • 如果字符串中是数字,则直接转换为对应的数值
    • 如果字符串是空的,则转换为0
    • 如果字符串中包含上述格式之外的字符,则转换为NaN
  6. 如果是对象,也比较复杂,有以下规则:
    • 调用目标的valueOf方法,然后按以上步骤转换,如果结果是NaN,再调用toString方法,按以上步骤返回转换的字符串值

String字符串

转换为String类型

转换为String类型有以下规则:

  1. 如果目标对象有toString方法,调用并返回结果
    • 对象的toString返回[object Object]
    • 函数的toString返回函定义的字符串形式
    • 空数组返回""
    • 有内容的数组toString返回和join方法一致
  2. 如果值是null,返回"null"
  3. 如果值是undefined,返回"undefined"

Object

javascript中Object用来定义对象,Object是所有对象的基础。

var obj1=new Object();
var obj2={};

以上两种写法都可以正确定义对象,推荐第二种写法。

每个Object对象实例都有以下方法:

上一篇 下一篇

猜你喜欢

热点阅读