现在的位置: 首页 > 综合 > 正文

(二)ECMASCript基础(2)–数值类型和引用类型

2013年12月24日 ⁄ 综合 ⁄ 共 3128字 ⁄ 字号 评论关闭

Primitive and Reference Values
primitive values are simple pieces of data that are stored on the stack,which is to say that their
value is tored directly in the location that the variable accesses.
Reference values,on the other hand,are objects that are stored in the heap,meaning that the value
stored in the variable location is a pointer to a location in memory where the object is stored.
基础值(类型)和引用值(类型)。
基础类型存储于栈区(stack)
引用类型存储于堆区(heap),而对于他的调用,是通过存储在栈中的指针来完成的。
原始类型有五种:Number、String、Boolean、Null和Undefined。
引用类型都继承自Object,包括array、regexp、date等等。

typeof 操作符,返回传入变量的类型。
undefined   传入值为未定义类型。
boolean        传入值为Boolean类型。
number        传入值为Number类型。
String        传入值为String类型。
object         传入值为一个引用类型或Null类型。
function     参数为函数。

然后是一些关于定义变量但是未初始化的情况,typeof 返回undefined。
如果一个函数,没有返回值的情况,则其typeof 也为undefined。
比如:function fnAlertInfo(){}   对于此函数,typeof fnAlertInfo 为function
      function fnAlertInfo(){return ;} 对于此函数, typeof fnAlertInfo() 为undefined
      function fnAlertInfo(){return "" ;}  对于此函数,typeof fnAlertInfo() 为string
要注意其中的不同点,第一个的返回值与fnAlertInfo函数的函数体没有关系,他返回的是函数。一般用于判断函数是否存在。
后两者的返回是根据函数的返回值来进行判断。
一般情况下还都没怎么用到过,最近在工作中,还真是出现了一个需要用的地方,情况是我们的页面是由decorators组合的,
分为上中下三部分,上部为菜单栏,菜单栏中要动态修改中间部分的一个状态位。但是中间的那部分可以是任意页面,有的
页面中是不需要更改的,因此加入了如下判断if(typeof(getStatus)=="function"){getStatus();}这样就可以避免错误了。
在没看这个文档前也写出了程序,以前也用过些,不过没有系统的了解。在这里mark一下。

Null类型
    alert(null == undefined)  return true.
Number类型
    var iNum=55;
    如果是8进制  var iNum =070;首字母以0开头。
    如果是16进制 var iNum=0x1f;以0x开头。
String类型
数值型转换为String类型。可以加入2进制,8进制,16进制。如果不特殊说明,为10进制。
var iNum = 10; iNum.toString(2);iNum.toString(8);iNum.toString(16);
转换为数值类型。
parseInt("1232.5")为1232 因为.对于一个整数来说是不合法的。
parseInt("10",2);parseInt("10",8);parseInt("10",16);parseInt("10",10);都是合法的。后一个参数标示其进位基数。
parseFloat不区分进制,均为10进制。parseFloat("0xa");返回一个NaN。其不是别16进制。
类型转换,这里就是对Boolean(value),Number(value),String(value)的应用。没有什么特别需要注意的。跳过了。

引用类型:
var oTemp = new Object();
var oBooleanObject = new Boolean(true);
var oNumberObject = new Number(55);
var oStringObject = new String("aa");这些都属于应用类型。
在这里主要是介绍他们的一些函数运用。
oNumberObject.toFixed(2) 返回一个以定点表示法表示的数字的字符串形式。该字符串中小数点之前有一位有效数字,而且其后必须包含 fractionDigits 数字。
                           如果没有 fractionDigits 参数,或者该参数为 undefined,toFixed 方法假定该值为 0。
                         fractionDigits可选项。小数点后的数字位数。其值必须在 0 – 20 之间,包括 0 和 20。
var oNumberTemp = new Number(111.511);
oNumberTemp.toFixed(1) 为111.5
oNumberTemp.toFixed(4) 为111.5110

oNumberObject.toExponential 返回一个字符串,其中包含一个以指数记数法表示的数字。
                            numObj.toExponential([fractionDigits])
oNumberTemp.toExponential(1) 为  1.1e+2
oNumberTemp.toExponential(2) 为  1.12e+2
oNumberTemp.toExponential(3) 为  1.115e+2 四舍五入。

StringObject
length,charAt,charCodeAt(),concat,indexOf,lastIndexOf,subString,slice等等。

delete 用于删除开发者定义的对象属性。而不能删除那些ECMASCript定义的属性。
var oTemp = new Object();o.name="Nicholas";
alert(o.name);        //输出"Nicholas"
delete(o.name);
alert(o.name);        //输出"undefined"

delete(o.toString()); //错误。

                         
void 该操作符返回undefined。为了避免输出一些不需要输出的值。
<a href="javascript:window.open('about:blank');">Click Me</a>
<a href="javascript:void(window.open('about:blank'));">Click Me2</a>

primitive:['primitiv]原来的;基本的;原始的;远古的;早期的
reference:['refərəns]提及;涉及;关系,关联
explicitly:[ik'splisitli]明白地;明确地
unique:[ju:'ni:k]无可匹敌的,无与伦比的[Z];唯一的,独一无二的;独特的
represent:[,repri'zent]描绘,(抽象地)表现;
literal:['litərəl]照字面的;原义的
digit:['didʒit] 数字

【上篇】
【下篇】

抱歉!评论已关闭.