JavaScript编程入门 --数据类型(null、 undefined)


JavaScript 是一门面向对象的编程语言,但是区别与我们熟知的java、c#等强类型的面向对象的语言。JavaScript的面向对象是基于对象原型的面向对象,而不是像java 、c#等强类型语言一样是基于类的面向对象。理解这一点很重要,这是JavaScript与其他面向对象语言最大的区别。

JavaScript也是一门日益流行的编程语言。注意,笔者始终强调,它是一门编程语言,一门面向对象的编程语言,不再是一门简单的寄生在浏览器中运行的脚本语言。

JavaScript可以运行在客户端(通常是web浏览器)操作html dom 使之显示动态的效果,JavaScript也可以运行的服务器端(如nodejs),由服务器提供JavaScript解释器和执行引擎,JavaScript也可编写图像化,文件io 、网络编程、线程开发、甚至游戏开发。总之,JavaScript正在成长成为一门用途广泛、且强大的编程语言----广泛的应用领域、高速的解释执行引擎,灵活多变的弱类型数据结构、强大的函数式编程风格等等,这就是JavaScript!


相信未来的十到二十年后,JavaScript一定会变得超乎我们想象的强大。 


JavaScript中数据类型:

Number    数字类型,包括整型、浮点型

String      字符串直接量,字符串变量,字符串对象

Object      对象   

Function    函数对象

Array    数组对象

Boolean   布尔值对象

RegExp   正则模式对象

Date       日期对象

Math      数学对象

Error       异常对象

null        空

undefined   未定义  


null 和undefined 是JavaScript中的两个特殊的数据类型,也是JavaScript的关键字。对null 执行typeof运算,结果返回‘object’ ,也就是说可以将null认为是特殊的对象值,其含义是‘非对象’,但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字,字符串和对象的‘无值’。

undefined则是JavaScript中表示更深层次的‘空值’,它是变量的一种取值,表示变量没有被初始化。在查询对象中不存在的属性或数组中不存在的成员时,会返回undefined,说明属性或成员不存在。如果存在但值为null,则会返回null。

  尽管null和undefined是不同的,但它们都表示‘值的空缺’,两者往往可以互换。‘==‘运算符比较二者时返回true(===比较时返回false),在期望是布尔类型的场合使用它们时,则会将它们转为false(假值)。null和undefined都不包含任何属性和方法,这也是与其他值(基本)类型不同的地方。

      一般的,JavaScript 的值类型(也称为基本类型)都有直接量和包装对象两种体现形式。比如,我们在代码中直接输入一个 ‘abc’, 那么它就是一个字符串直接量,在JavaScript内存中就存在一个内存区值为‘abc‘。 但是由于我们没有给定一个变量指向这个内存区,所有我们不能使用它。这时我们应该为这个内存区设置一个变量指向(引用)这个内存区。var  a='abc'; 这时a就指向了‘abc’。  JavaScript是弱类型语言,实际上你随时可以改变a的指向,指向一个Object对象或一个Array数组等均可。

你可以访问a.length 甚至a.split()方法,你一定会好奇,‘abc’ 这个字符串不是基本类型吗,为什么还可以像对象一样可以有自己的属性和方法呢?

        为了解释清楚这个问题,我们必须先了解JavaScript中值类型和对象类型(null 和undefined是2种特殊值类型,我们暂且不提)。JavaScript中虽然有数字、字符串、布尔值、正则模式、日期、数学、函数等类型,但是按照是否具有对象的的特性标准来分,字符串和、数字、布尔都是值类型(仅仅具有值的性质,没有自己的属性和方法),与之相对的Ojbect、Function 、Array、Math 它们天生就有自己的属性和方法,换句话说它们天生就是具有对象特性。(后面我们将会讲到Function 、Array其实也是对象)

那么为什么a.length 、a.split() 调用 时不会出错呢? 因为当你调用一个值类型的属性或方法时,JavaScript自动将值类型a转变为一个临时对象 new String

(a),调用结束后临时对象消失,a又变回了值类型 (转换规则 :字符直接量转变为String对象   ,数字直接量转变为Number对象,布尔直接量则转变为Boolean对象等)

我们再来看下,为什么笔者一直说null和undefined是JavaScript中两种特殊的原始值数据类型。其一,null和undefined 虽具备值的性质,但它们表示‘空值’或'未定义的值',区别于其他值类型,尽管如此,我们一般还是将它们当做值类型。其二,它们不能够转变为对象,区别于对象类型,也就是说你永远不能调用它们的任何属性或方法,而其他值类型都可以转变为对象。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值