Javascript 数据类型

Javascript支持5钟基本数据类型以及Array(数组)、Objects(对象)、Function(函数)3中符合数据类型。

基本数据类型和复合数据类型的不同之处在于他们的存储方式不同,基本数据类型是直接存储的,而复合数据类型是引用存储的,所以又称为引用类型。基本数据类型占用的存储空间是固定的,在程序被解释执行时,数据直接存储在变量指向的存储单元中(内存),通过变量可以直接访问到该数据;而复合数据类型的长度是可变的,变量指向的存储单元中存放的是它们的实际存放地址。

Javascript基本数据类型包括:number(数值)、String、boolean、undefined(未定义)和null(空)。

  • 数值型
数值型包括整数和浮点数。在js中,所有的数值均被作为浮点数处理,均以64位浮点数的形式进行表示。
关于数值类型,有一个特殊的数据NaN,该值表示“不是数值”。在某些情况下将返回该值,例如当强制将纯字符串转换为数值时将返回NaN。
  • 字符串型
字符串型式指由单引号或者双引号括起来的一串字符。字符串长度不受限制,可以是一个字符,多个字符,或者不包括任何字符的空字符串。js没有单个字符的char类型。
字符串内容本身需要包含引号时,可以使用与外层引号不同的方式。如果通过双引号定义字符串,可以在字符串内容中使用单引号,如果以单引号定义字符串,可以使用双引号。
当需要在单引号括起的字符串中包含单引号,或者在双引号括起的字符串中包含双引号时,需要使用反斜杠进行转义。
  • boolean型
略...
  • undefined 与 null
当一个对象属性不存在或者变量定以后从未赋值时,返回undefined。undefined与布尔值不同,不能通过和undefined比较来确定变量是否为undefined。例如下面两种方式是错误的。

if(a==undefined) //错误
if(typeof(a) == undefined) //错误

typeof是一个一元操作符,以字符串形式返回变量的类型名称。

但是,可以通过与“undefined”字符串进行比较来判断变量是否为undefined类型。 if(typeof(a) == "undefined") //正确

数据类型null只有一个值:null。包含null的变量包含“无值”或“无对象”,即该变量没有保存有效的数值、字符串、布尔值、数组或对象。可以通过给一个变量赋null值来清除变量的内容。 null与0不相等。


  • 数组
与Java等语言不同,Javascript数组具有以下特点:
  1. 不要求数组元素数据类型,元素可以是任何数据类型,同一数组中各元素数据类型可以不同。
  2. 数组长度可动态变化。
  3. 不支持多维数组,但支持数组元素嵌套,即元素可以是数组。
数组定义
  1. 通过Array()构造函数定义 :格式一 var name = new Array(num); 格式二 var name = new Array(); 格式三 var name = new Array(元素1,元素2,....);
  2. 直接赋值法: var name = [元素1,元素2,元素3,...];
要删除数组元素,直接通过delete运算符删除,例如:delete arr[3];  alert(arr[3]); //输出: "undefined"
注意,使用运算符delete删除数组元素时,元素值被删除,但元素所占空间并没有被删除,数组长度并没有发生变化,即时删除最后一个元素,数组长度仍保持不变。

  • 变量与常量
javascript中变量和常量没有区别。
局部变量使用规则
当函数中定义了全局变量,该变量的作用域为函数中任何地方,不仅包括变量定义语句之后,也包括变量定义语句之前。例如:
<span style="white-space:pre">	</span>var userName = "global name";
<span style="white-space:pre">	</span>function test()
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>document.write(userName);<span style="white-space:pre">		</span>//输出"undefined"
<span style="white-space:pre">		</span>document.write("<br>");
<span style="white-space:pre">		</span>var userName = "local name";
<span style="white-space:pre">		</span>document.write(userName);<span style="white-space:pre">		</span>//输出"local name"
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>test();
因为在函数test()中定义了与全局变量同名的局部变量,所以全局变量被覆盖。定义的局部变量userName将作用于整个test()函数中,包括变量定于语句之前的输出语句。因为是在变量定义之前调用局部变量,所以输出结果为“undefined”。
 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值