javascript-数据类型

javasscript有5种简单数据类型(也成为基本数据类型):

Undefined、Null、Boolean、Number、String

1种复杂数据类型:

Object

在javascript中所有值的数据类型就是上述6种之一了。那么我们需要一个方法来检测给定变量到底是那种数据类型,typeof操作符就可以帮助我们解决问题。

   
var msg="博客园";
alert(typeof msg);  // "string"
alert(typeof 110);  //  "number"

 

使用typeof 操作符,返回下列某个字符串:

"undefined" --该值未定义

"boolean"--布尔值

"string"--字符串

"number"--数值

"object"--对象或null

"function"--函数

看到这里我们对"object"--对象或null有些疑惑,为什么 typeof null 会返回object,这里我们需要记住的是null是一个特殊类型,他表示对一个空对象的引用,所以会返回object。

华丽的分割线 ----------------------------------------------------------------------------------------------------------------------------------------------------------------

1.Undefined类型

当我们声明一个变量时没有对其进行初始化,这个变量的值就是undefined:

   
var msg;
alert(msg==undefined); // true

例子中声明变量msg,并没有对其进行初始化,所以会弹出undefined。

所以声明变量时我们也可以使用undefined来初始化变量:var msg=undefined,

但是未经初始化的值会默认取得undefined,这种写法也没必要了。
   
var msg; // 声明变量,默认取得undefined
// 变量name没有声明
// var name
 
alert(msg); // "undefined"
alert(name); // 产生错误

上述代码name变量并没有被声明,传递给alert函数时产生一个错误。

这时我们用typeof检测一下我们的变量:
   
var msg; // 声明变量,默认取得undefined
// 变量name没有声明
// var name
 
alert(typeof msg); // "undefined"
alert(typeof name); // "undefined"

结果是未初始化和未声明的变量执行typeof都返回了undefined,这个结果有其逻辑上的合理性。因为虽然这两种变量从技术上角度看有本质区别。

即便未初始化的变量会自动赋予undefined值,但养成显式初始化变量(即在声明变量的同时给变量赋值)的习惯。如果能够做到这一点,那么当typeof操作符返回undefined

时,我们就知道被检测的变量是有还是没有被声明的,而不是尚未初始化的了。

2.Null类型

前面说过null是一个特殊的类型,表示对一个空对象的引用。

但是undefined和null之间有什么关系呢?看下面的代码:
1
   
alert(null==undefined); // true

实际上,undefined值派生自null值,因此ECMA-262规定它们的相等测试要返回teue。

尽管有这样的关系,但他们的用途完全不同。前面也说过声明变量没有必要显示的初始化为undefined,会默认取得。对于null却不能这样了,也就是说声明一个变量来保存对象,只要

变量还没有保存,就应该让变量明确保存null值。这样既能体现null作为空对象指针的特性,又能区分null和undefined。

3.boolean类型

boolean类型只有两个值:true和false。这两个值与数值值不是一回事,因此true不一定等于1,false也不一定等于0。

boolean类型的字面值true和false是区分大小写的。像True和False都不是boolean值,而是标识符。

虽然boolean类型的值只有两个,但是其他类型的值都有与这两个boolean值等价的值。将一个值转换为其对应的boolean值,需要调用Boolean()函数。
   
var msg="博客园";
alert(Boolean(msg)); // true

在上述代码中字符串msg被转换成了一个boolean值。可以对任何数据类型的值调用Boolean()函数,而且总会返回一个boolean值。这个值是true还是false取决于被转换数值的数据类型和具体的值。

看如下各数据类型及对应的转换规则:

                         数据类型                                       转换为true的值                                             转换为false的值

                    boolean                                                  true                                                                            false        

                         string                                                      非空字符串                                                                  ""空字符串

                         number                                                   非零数值                                                                     0 和 NaN  

                         objeact                                                   任何对象                                                                      null          

                         undefined                                                ------不适用                                                               undefined

通过这些转换规则,可以帮我们很好的理解控制流语句if自动执行相应的Boolean转换:
   
var msg="博客园";
if(msg)
{
    alert("变量msg被转换为true");
}

运行上述代码,就会显示一个警告框。字符串msg被自动的转换为对应的Boolean值。明白这个原理,我们就能很好的在控制语句if中使用变量了。

4.number类型

3.1整数,最常用的就是十进制整数了。当然还有八进制、十六进制,这里不做讲解了。

需要注意的是在做算术计算时,所有以八进制和十六进制表示的数值最终都会被转换成十进制数值。

3.2浮点数值,就是该数值中必须包含一个小数点,小数点后面必须有一位数字。
   
var num1=1.1;
var num2=1.2;
var num3=.3;  // 有效,但不推荐

由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会自动把相应的浮点数值转换为整数值。如果小数点后面没有跟数值(2.)或者后面跟了一个零(2.0),

这个值就会被作为整数值来保存:
   
var num1=2.;
alert(num1);  // 2,小数点后没有数值解析为2
 
var num2=2.0;
alert(num2);  // 2,本身就是一个整数解析为2

对于那些极大或者极小的数值,可以用e表示法(科学计数法)来表示浮点数值。

科学计数法的格式:整数/浮点数 + e/E + 10的幂中的指数

                             3.125           e            7  == 1
   
var num1=3.125e7;  // 31250000

3.3数值范围,由于内存的限制,并不能保存所有的数值。

能表示的最小值:Number.MIN_VALUE,这个值是5e-324。

能表示的最大值:Number.MAX_VALUE,这个值是1.7976931348623157e+308。

如果你的某次计算得到的值不在javascript最小和最大值这个范围内,那么你的值会被自动转换成特殊的Infinity值。

如果这个值是负数,会转换成-Infinity(负无穷);如果是正数,则是转成Infinity(正无穷)。

3.4 NaN:非数值。有两个特点:

一、任何涉及NaN的操作都会返回NaN(例如NaN/5).

二、NaN与任何值都不相等,包括本身。

alert(NaN==NaN); // false

针对NaN的这两个特点,javascript定义了isNaN()函数。这个函数接收一个参数,该参数可以是任何类型,函数会帮我们确定这个参数是否“不是数值”。

isNaN()在收到一个值后,会尝试将这个值转换为数值,某些不是数值的值会直接转换为数值,(字符串“10”或Boolean),任何不能被转换的都会返回true
   
alert(isNaN(NaN)); // true
alert(isNaN(10)); // false 10是数值
alert(isNaN("10")); // false "10"可以被转换为数值10
alert(isNaN("博客园")); // true 不能转换为数值
alert(isNaN(false)); // false 可以被转换为0

5.String类型

字符串是 JavaScript 的一种基本的数据类型。

String 对象的 length 属性声明了该字符串中的字符数。

String 类定义了大量操作字符串的方法,例如从字符串中提取字符或子串,或者检索字符或子串。

6.object类型

一组数据和功能的集合,对象可以通过new操作符来创建对象。
   
var obj=new Object();

可以自定义对象的属性或方法:
   
var obj=new Object();
obj.name="张三";
obj.say=function(){
    alert(this.name)
}

还可以这么写:
   
var obj={
    name:"张三",
    say:function(){
        alert(this.name)
    }
}

结果是一样的。

在javascript中object是所有对象的基础,因此所有的对象都具有object的属性和方法。

时间: 2024-08-03 18:41:22

javascript-数据类型的相关文章

Javascript数据类型转换规则

Javascript有7种数据类型,包括5种原始类型(也叫原始值)number.Boolean.string.null.undefined 和2种复合类型object.array,它们之间可以根据某种规则相互转换.<Javascript权威指南>列出了在Javascript中如何进行 类型转换,如下表: 其中原始值之间的转换没什么可说的,记住就好了,我们要关注的是复合值(即对象)与原始值之间的转换.原始值转换成对象直接调用Object()方法即可(null和undefined不可调用该方法),

浅谈JavaScript数据类型

 本文从javascript的数据类型的简介开始谈起,接着讲述了javascript的6种数据类型,分别为Number.Boolean.String.Null.Undefined和Object,并给出了一个typeof操作符的示例,这里分享给大家.     1.数据类型是什么? 我们接触的绝大多数程序语言来说,把数据都进行了分类,包括数字.字符.逻辑真假:int,long,string,boolean....等等:我们都知道计算机对数据处理时是采用二进制的方式.将数据加载到内存中,并且通过CPU

浅谈JavaScript数据类型及转换

本文向大家简单介绍了javascript的数据类型以及他们直接的转换方法,虽然没有太多示例,但是也是个人的一些经验总结,这里推荐给大家. JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 n1.toFixed(3);//四舍五入保留3位小数. 3.String(字符串) 代码如下: var s1='hello';//字符串类型 字符串:(值类型,

浅谈JavaScript数据类型_基础知识

1.数据类型是什么?        我们接触的绝大多数程序语言来说,把数据都进行了分类,包括数字.字符.逻辑真假:int,long,string,boolean....等等:我们都知道计算机对数据处理时是采用二进制的方式.将数据加载到内存中,并且通过CPU调度进行计算得到最终结果,那么,难道内存存储数据时会记录所以数据的类型吗?我认为答案是否定的,内存中的数据应该会根据所占内存的大小来进行区分和计算的,两种不同类型数据的计算,对于CPU来说只是调度了两个所占内存大小不一的数据来进行计算,所以对于

浅谈JavaScript数据类型及转换_基础知识

JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 n1.toFixed(3);//四舍五入保留3位小数. 3.String(字符串) 复制代码 代码如下: var s1='hello';//字符串类型 字符串:(值类型,字符串不可变特性) 4.Undefined(未定义) undefined属于值类型,与其他值计算得到的结果不是我们想要的,但与数

javascript权威指南 学习笔记之javascript数据类型_javascript技巧

复制代码 代码如下: <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>javascript数据类型</title> </head> <body> <script type="text/javasc

JavaScript数据类型学习笔记分享_javascript技巧

本文实例为大家讲解JavaScript数据类型的相关资料,供大家参考,具体内容如下 1.引用类型 引用类型的值是引用类型的一个实例,引用类型是一种数据结构,用于将数据和功能组织在一起,也常被叫做类. 对象时某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的,构造函数本身就是函数,是出于创建新对象的目的而定义的.  var person = new Object(); 2.Object类型 (1)Object类型对于应用程序中存储和传输数据来说,是非常理想的选择. (2)Ob

简单介绍JavaScript数据类型之隐式类型转换_javascript技巧

JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object.object是引用类型,其它的五种是基本类型或者是原始类型.我们可以用typeof方法打印来某个是属于哪个类型的.不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换.隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等.. typeof '11' //string typeof(11) //number '11' < 4 //false 本章节单

javascript数据类型验证方法_javascript技巧

最近对javascript数据类型的验证又有了一个新的认识,原来可以判断得这么简单又如此全面. 我们自定义了isString,isNumber ,isDate ,isError ,isRegExp ,isBoolean ,isNull ,isUndefined ,isObject等方法.现在将自己定义的javascript数据类型验证函数及测试集展示: <!DOCTYPE html> <html> <head> <meta charset="utf-8&

JavaScript数据类型

数据类型在任何的计算机语言中都比较重要的,JavaScript语言也是面向对象的.数据类型JavaScript数据类型可以分为:数值类型.布尔类型.字符串类型.对象类型和数组类型等.1.数值类型数值类型包括了整数和浮点数,整数可以是十进制.十六进制和八进制数,十进制数由一串数字序列组成,它的第一个数字不能为0.如果第一个数字为0,则表示它是一个八进制数.如果0x,则表示它为一个十六进制数. 浮点数必须包含一个数字.一个小数点或"e"(或"E").浮点数例子如下:3.