JavaScript中的原始类型——js基础(一)

      准备阅读《JavaScript高级编程》一书,在此做一些笔记,一来方便自己查阅,二来给自己一点“压力”,三,如果可以的话,希望可以方便一下大众。

      翻过JavaScript历史(有兴趣的朋友可以网上找找资料),直接进入正题……

———————————————————分割一下—————————————————————————————

 

      在ECMAScript中(为什么是ECMAScript中,因为JavaScript包括了ECMAScript、DOM、BOM,而ECMAScript定义了JavaScript中的语法、关键字等等),变量可以存放两种类型的值,原始类型和引用类型,原始类型其实可以理解为Java、C#等语言的值类型 ,值存放在栈(stack)上面。ECMAScript中包含五种原始类型,即Undefined、Null、Number、Boolean、String,注意:String类型在JavaScript中属于原始类型 ,这点不同于Java、C#等语言。

 

      在为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型的。

 

      在JavaScript中,把术语类型(type)定义为值的一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。 ECMAScript提供了typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型;如果它是原始类型,还可以判断表示哪种原始类型(注意:对Null值使用typeof运算符,返回的是object)。

 

      typeof运算符

      typeof运算符有一个参数,即要检查的变量或值。例如

      var sTemp = "test string";

      alert(typeof sTemp);//output "test string"

      alert(typeof 20); //output "number"

 

      对变量或值调用typeof运算符将返回下列值之一:

      ”undefined“,如果变量是Undefined型的。

      ”boolean“,如果变量是Boolean型的。

      ”number“,如果变量是Number型的。

      ”string“,如果变量是String型的。

      ”object“,如果变量是一种引用类型或Null类型的。

      注意:为什么typeof运算符对于null值会返回”object“。这实际上时JavaScript最初实现中的一个错误,后来被ECMA沿用了。现在,null被认为是对象的占位符,从而解释了这一矛盾,但从技术将,它仍是原始值。

 

      Undefined类型

      undefined类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。

      注意:值undefined并不同于未定义的值。 但是,typeof运算符并不真正区分这两种值。考虑如下代码:

      var oTemp;

      alert(typeof oTemp); //output "undefined"

      alert(typeof oTemp2); //output "undefined"

      但是,如果不用typeof运算符,就对oTemp2使用其他运算符,这将引起错误,因为那些运算符只能用于已定义的变量。例如,下面代码将引发错误:

      alert(oTemp2 == undefined); //error

      当函数无明确返回值时,返回的也是值undefined。

 

     Null类型:

     null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。

     alert(null == undefined); //output "true"

     尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。

 

    Boolean类型

    Boolean类型是ECMAScript中最常用的类型之一。它有两个值true和false(即两个Boolean字面量)。即使false不等于0,0也可以在必要时被转换成false,这样在Boolean语句中使用两者都是安全的。

    其实alert(1 == true);返回的是true;alert(0 == false);返回的也是true。不知道为什么说上面说的“false不等于0”是什么意思。

 

    Number类型

    ECMA-262中定义的最特殊的类型是Number型。这种类型既可以表示32位的整数,还可以表示64位的浮点型。直接输入的(而不是从另外一个变量访问的)任何数字都被看作Number型的字面量。例如下面代码声明了存放整数值的变量,它的值由字面量55定义:

    var iNum = 55;

 

    整数也可以被表示为八进制(以8为底)或者十六进制(以16为底)的字面量。八进制字面量的首字母必须为0,其后的数字可以是任何八进制数字(0到7),如下面代码所示:

    var iNum = 070; //等于8

 

    要创建十六进制的字面量,首位数字必须为0,其后接字母x,然后是任意的十六进制数字(0到9和A到F)。这些字母可以是大写的,也可以是小写的。例如:

    var iNum = 0x1f; //等于31

    var iNum2 = 0xab; //等于171

 

    注意:尽管所有整数都可以表示为八进制或者十六进制的字面量,但所有的数学运算符返回的都是十进制的结果。

    要定义浮点值,必须包括小数点和小数点后的以为数字(例如,用1.0而不是1)。这被看作浮点数数字面量。例如:

    var fNum = 5.0;

 

    浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。???

 

    (还有科学记数法等不常用的内容,由于不常用,大家可以查查资料。)

 

 

    String类型:

    String类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示。由于JavaScript中没有字符类型(如Java、c#中的char类型),所以声明一个字符变量用双引号或者单引号都可以。

 

   另外,String类型还包括几种字符字面量,Java、C和perl的开发者应该对此比较熟悉。下表列出了ECMAScript的字符字面量:

   字面量                   含义

    /n                       换行

    /t                        制表符

    /b                       空格

    /r                        回车

    /f                        换页符

    //                        反斜杠

    /'                        单引号

    /"                       双引号

    /0nnn                八进制代码nnn(n是0到7中的一个八进制数字)  表示的字符

    /xnn                  十六进制代码nn(n是0到F中的一个十六进制数字) 表示的字符

    /unnnn              十六进制代码nnnn(n是0到F中的一个十六进制数字)表示的Unicode字符

 

 

201105021245(完)

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值