js数据类型

简单数据类型:Undefined    Null    Boolean    Number    String

复杂数据类型:Object(由一组无序的名值对组成)

 

typeof操作符

  • undefined —— 值未定义
  • boolean    —— 布尔值
  • string        —— 字符串
  • number     —— 数值
  • object       —— 对象或null
  • function    —— 函数

 

Undefined类型

var声明未初始化的值,对未初始化和未声明的变量执行typeof操作都会返回undefined值

用途:

  • 比较
  • 区分空对象指针与未初始化的变量

 

Null类型

null表示空对象指针

用途:定义的变量准备在将来用于保存对象

 

Boolean类型

true和false:

  • true不一定等于1,false也不一定等于0;
  • 区分大小写,大写的True和False都不是布尔值;

调用boolean()函数转换规则:

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

 

Number类型

IEEE754G格式表示整数和浮点数,为支持各种数据类型,定义了不同的数值字面量格式:

  • 十进制;
  • 八进制,第一位必须是0,后是八进制的数字序列0~7,如超出范围,前导零将被忽略,后面的值则被当做十进制解析(在严格模式下无效,js引擎会抛出错误);
  • 十六进制,前两位必须是0x,后跟(0~9及A~F)的十六进制数,A~F可大写可小写;
  • 在算数计算时,八进制和十六进制的数值都将转换成十进制数值;

1、浮点数值

 数值中必须包换一个小数点,且小数点后面必须有位数字;

保存浮点数值需要的内存空间是保存整数的两倍,因此ECNAScript会将浮点数转换为整数;

对于极大或极小的数值,用e(科学计数法)表示浮点数:

//数值(整数或浮点数),中间字幕e,后面是10的幂中的指数,该幂值用来与前面的数相乘
var n = 3.125e7  // 等于31250000
//极小数值,如0.00000000000000003 == 3e-17
//浮点数最高精度是17位小数,但在进行运算时,其精确度远不如整数,列入:
0.1+0.2 = 0.30000000000000004  //而不是0.3
//因此永远不要测试某个特定的浮点数

 

2、数值范围

最小数值:Number.MIN_VALUE  (5e-324);

最大数值:Number.MAX_VALUE (1.7976931348623157e+308);

计算操出js数值范围,则被自动转换成特殊的Infinity或-Infinity,且不能参与下一次的计算

isFinite()函数确定是不是位于最小和最大的中间,是,则返回true,反之返回false;

 

3、NaN

非数值,是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况

特点:

  • 任何涉及NaN的操作,都会返回NaN;
  • NaN与任何值都不相等,包括NaN自身;

isNaN()函数,接受任何类型的一个参数,结果是确定这个参数是否“不是数值”,接受一个参数:

  • 参数是字符串数值,则在后台对这个值转换为数值;
  • 参数是布尔值,则转换为0或1;
  • 参数是对象,则先调用valueOf(),得到是否可以转换为数值,如果不能,则在调用toSting(),在返回值;

0 除以 0 返回NaN;正负数 除以 0  返回Infinity/-Infinity

 

4、数值转换

Number()函数转换规则:

  •  boolean,转1或0;
  • 数值,直接传入和返回;
  • null,返回0;
  • undefined,返回NaN;
  • 字符串:
  • 字符串数值,转成十进制数值,‘023’转成123,忽略前导0;
  • 字符串数值包含有效浮点数,‘01.1’转成1.1,忽略前导0;
  • 字符串包含有效的的十六进制,‘0xf’转换成同等大小的十进制数值;
  • 字符串是空“”,则转换为0;
  • 字符串包换除上诉情况外,则转换为NaN;
  • 对象,则先调用valueOf(),返回对应的数值,如果返回NaN,则调用toSting(),转换返回的字符串值;

parseInt()函数,从左至右依次解析:

  • 第一个字符不是数值或负号,则返回NaN;
  • 空字符,则返回NaN;
  • 忽略字符串前面的空格,直到找到第一个非空数值字符串;
  • 前面解析为数值,后面则不是数值字符串则忽略,‘123b’,返回123,忽略“b”,‘12.3’;则返回12,忽略‘.3’;

对于二进制、八进制、十进制、十六机制的转换,则传递第二个参数(指定转换的基数)parseInt( 10,2 ),返回二进制数;

parseFloat()函数,从左至右依次解析(与parseInt()不同之处):

  • 第一个小数点有效,“22.34.5”,返回22.34;
  • 始终会忽略前导零;
  • 十六进制格式的,返回0,parseFloat()只解析十进制值,没有第二个参数;

 

String类型

1、字符字面量

 特殊字面量,也叫转义序列,用于表示非打印字符,字面量如下表:

字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 进纸
\\ 斜杠
\' 单引号('),在用单引号表示的字符串中使用
\" 双引号("),在用双引号表示的字符串中使用
\xnn 以十六进制代码nn表示的一个字符(其中n为0~F),列如:\x41表示"A"
\xunnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。列如:\u03a3表示希腊字符

 

双字节与单字节 

 

2、字符串的特点

特点:字符串一旦创建,其值不能被改变,要改变某个变量保存的字符串,首先要销毁原来的字符

var lang = "Java";
lang  = lang + "script"

//后台操作步骤:
  //1、创建能容纳10个字符的新字符串
  //2、新字符串中填充"Java"和"script"
  //3、销毁原来的字符串"Java"和字符串"script"

 

3、转换为字符串

 toString()

  • 除了null和undefined,每个值(数值、布尔值、对象、字符串【返回字符串的一个副本】)都有 toString()方法;
  • 输出数值的基数,传递一个参数(二进制、八进制、十进制、十六进制以及任意有效进制格式),默认情况下toString()以十进制格式返回数值字符串,

String()

可以将任何类型的值转换为字符串,包括null和undefined

转换规则:

  • 值有 toString()方法则调用 toString();
  • null,返回“null”;
  • undefined,返回“undefined”;

 

Object类型

Object是一组数据和功能的集合,是所有它的实例的基础,每个实例有具有Object的属性和方法:

  • constructor:保存着用于创建当前对象的函数,列如:构造函数(constructor)就是Object();
  • hasOwnProperty( “propertyName” ):用于检查给定的属性在当前对象实例中(而不是实例原型中)是否存在;
  • isPrototypeOf( object ):用于检查传入的对象是否是传入对象的原型;
  • propertyIsEbumerable( “propertyName ” ):用来检查给定的属性是否能够使用for...in语句来枚举;
  • toString():返回对象的字符串表示;
  • valueOf():返回对象的字符串、数值、布尔值表示,通常与toString()的返回值相同;

 

posted @ 2017-05-08 17:06  唐新  阅读(109)  评论(0编辑  收藏  举报