JavaScript基础知识梳理----数据类型

JavaScript数据类型

JavaScript的数据类型有六大类:

Undefined、null、string、number、object、boolean

1.Undefined

   ---使用var声明变量但未初始化,

对未初始化的变量或尚未定义的变量使用typeof运算符均会返回undefined

问题: 区分空对象指针和尚未定义的变量

使用typeof检测,尚未定义的变量返回的是undefined,而空对象指针返回的是object

2.Null

逻辑上null表示一个空对象指针

使用typeof检测时会返回object

 

Null和undefined的关系:

Undefined派生于null因此在使用“==”进行比较时会返回true

 

Tip:声明空对象时应将其赋值为null

3.String

由0个或16个Unicode字符组成

特性:

单引号和双引号不得交叉使用

使用 .length属性可以访问字符串的长度(转义序列表示一个字符,无法返回双字节字符长度)

字符串一旦被创建,则其值不可改变,若要改变必须销毁原有的字符串

转义序列:

\n    换行

\t 制表符

\b 空格

\r 回车符

\f 分页符

\\ 斜杠\

\’ 单引号’

\” 双引号”

类型转换:

1.tostring()---使用类型(number,string,boolean,object),可以使用参数,表示进制,默认是10进制。

2.String()----使用类型(六大数据类型)

3.eval()---计算字符串表达式的值并以数值形式返回

 

将一个值转换成一个字符串有两种方法,一是使用toString()方法,二是使用转型函数String()。下面是一些需要注意的问题:

  1,大多值都有toString()方法,null和undefined是没有的。

  2,对于字符串型的值也可以使用toString()方法,它会返回该字符串的一个副本。

  3,toString()方法可以传递一个参数,表示数值的基数。

  1. var t = 8;  
  2. t.toString(2);  //1000    

        默认情况下 参数是10。要说明的是对于非数值类型(boolean,string等)设置toString()的参数是无效的,

  1. var t ="8";  
  2. t.toString(2);  //8, 返回字符串的副本;  

  4,任何值都可以使用String()方法。它的过程是这样的

     首先,如果值有toString()方法,那么则使用该方法(无参数)。

     其次,那就是该值没有toString()方法,那就是 null 返回 "null",undefined返回"undefined";

  1. var a=null;  
  2. String(a);    //"null"  

 

eval函数的原义是 使之执行 这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。

假设后台输出json字符串response 前台使用 var json = eval("(" + response + ")");

如果严谨点 我们可以加一个判断

var jsonData = "";

if (typeof (data) === "string" && data != "null") { if (data == "") data = "{}"; jsonData = eval("(" + data + ")"); }

这时 我们认为 eval的作用就是将json string转为js对象

能够用eval实现的功能都可以用替代的方式实现 比如JSON.parse(JSON对象解析),比如new Function()(执行特定代码)

大部分不支持使用eval的原因有: 1、性能不好 2、不安全 3、产生混乱的代码逻辑

 

4.Boolean

true为真,false为假,

true不一定等于1,false不一定等于0

使用boolean()进行转换:

转换为true-- 1.任何非空字符串

2.任何非空值

3.任何非空对象

转换为false--1.空字符串

2.NaN和0

3.null及undefined

 

var a=[];
var b={};
typeof b ---> object;
typeof a ---> object;
Boolean(a) ---> true;
Boolean(b) ---> true;
空数组不是null

  

5.Number

进制: 十进制

八进制--前缀 0

      --有效序列 0~7

         --超出范围-前缀的0被忽略,后续数值以十进制计数

    十六进制--前缀 0x

 --有效序列 0~9 A~F

   浮点数:小数点后至少一位数字

最高精度17位小数

缺陷--存在舍入误差,无法测试特定的浮点数

NaN:Not a number(非数值)

--任何涉及NaN的操作都将返回NaN,NaN和任何数值都不相等,包括自身。

检测: isNaN()---可转换为数值 false

        ---不能转换为数值 true

数值转换:Number()

Boolean--(true为1,false为0);

Null--0;

Undefined--NaN;

String--(

只包含数字:十进制,前面如果有0则被忽略

包含有效浮点格式:浮点数值,前导0被忽略

包含有效的十六进制:相同大小的十进制数

空字符串: 0

其他格式:NaN

object--( valueOf() , toString() )

 

6.Object

定义:一组数据或功能的集合

声明:var o=new Object()

属性与方法:

1.Constructor 保存用于创建当前对象的函数

2.hasOwnProperty(propertyName) 检测给定属性在当前对象实例中是否存在

3.isPrototypeOf(object) 检测传入的对象是否是另一个对象的原型

4.propertyIsEnumerable(propertyName) 检测给定属性是否可用for-in语句枚举

5.toLocalString() 返回对象的字符串表示,该字符串与执行环境的地区对应

6.toString() 返回对象的字符串表示

7.valueOf() 返回对象的字符串、数值、或布尔值表示;通常与toString()值相同

posted @ 2016-09-22 01:06  galaxyxd  阅读(135)  评论(0编辑  收藏  举报