欢迎来到天天文库
浏览记录
ID:30778818
大小:68.70 KB
页数:6页
时间:2019-01-03
《javascript类型系统之基本数据类型与包装类型_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript类型系统之基本数据类型与包装类型写在前面的话javascript的数据类型可以分为两种:原始类型和引用类型原始类型也称为基本类型或简单类型,因为其占据空间同定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈(stack)中(按值访问)。其中,javascript基木数据类型包括Undefined>Null>Boolean、Number和String五种引用类型由于其值的大小会改变,所以不能将其存放在栈屮,否则会降低变量查询速度,因此其存储在堆(heap)中,存储在变量处的值是一个指针,指向存储对象的内存处(按址
2、访问)[注意]对于引用类型的值,可以为其添加属性和方法,也可以改变和删除其属性和方法;但基本类型不可以添加属性和方法数字(12)布尔值(true)null(对象)(对象)(对象)(对象)(对象)地址(0)字符串("test')UndefinedUndefined类型只有一个值,就是undcfincdo当声明的变量未初始化时,该变量的默认值是undefinedvartest;//undefinedconsole.log(test二二undefined);//truevartest二undefined;//undefined对于尚未声明过的变
3、量只能执行一项操作,使用typeof操作符检测其数据类型,但严格模式下会导致错谋typeof(test);//undefined出现场景[1]已声明未赋值的变量[2]获取对象不存在的属性[3]无返回值的函数的执行结果[4]函数的参数没有传入[5]void(expression)类型转换Boolean(undefined):falseNumber(undefined):NaNString(undefined):'undefined'NullNull类型只有一个值,就是nullo逻辑角度看,rmll值表示一个空对象指针,如果定义的变量将用于保
4、存对象,最好将该变量初始化为nullo实际上undefined值是派生自null值的,所以undefined==null[注意]null是空对象指针,而□是空数组,{}是空对象,三者不和同console.log(nul1二二undefined);//true出现场景对象不存在时类型转换Boolean(null):falseNumber(null):0String(null):'null'[注意]因为undefined和null不是构造器类型,所以不能添加自定义属性包装类型包装类型是特殊的引用类型。每当读取一个基本类型值的时候,后台就会创建
5、一个对应的基本包装类型的对象,从而可能调用一些方法来操作这些数据。包装类型共包描Boolean、Number和String三种varsi=sometext';vars2=sl・substring(2);//在上述过程中,实际上发生了三个步骤varsi=newStringCsometext');//(l)创建String类型的一个实例vars2=si.substring(2);//(2)在实例上调用指定的方法si=null;//(3)销毁这个实例[注意]引用类型和基本包装类型的主要区别是对象的生存期。使用new操作符创建的引用类型的实例,在
6、执行流离开当前作用域Z前都一直保存在内存屮。而口动创建的基本包装类型的对彖,则只存在于一行代码的执行瞬间,然后立即被销毁。这意味着不能在运行吋为基木类型值添加属性和方法varsi=sometext';si.color='red';alert(si.color);//undefined创建方式显式创建包装类型共两种方式:[l]Objcct方式[不建议使用]vars二newObject('abc');varb=newObject(true);varn二newObject(123);[2]构造函数方式[不建议使用]varb=newBoolean
7、(true);varn=newNumber(123);varnewString(,abc,);[注意]使用new调用基木包装类型的构造函数与直接调用同名的转型函数是不一样的varvalue二,25,;varnumber=Number(value);console.log(typeofnumber);//numbervarobj二newNumber(value);console.log(typeofobj);//objectBooleanBoolean类型只有两个值:true和falseoBoolean包装类型是与布尔值对应的引用类型,在布
8、尔表达式中使用Boolean对象容易造成误解出现场景[1]条件语句导致系统执行的隐士类型转换[2]字而量或变量定义类型转换Number(true):1
9、
10、Number(false):0Stri
此文档下载收益归作者所有