千家信息网

Javascript基本的数据类型以及对象类型有哪些

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,Javascript基本的数据类型以及对象类型有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。有程序设计经验的读者肯
千家信息网最后更新 2025年11月08日Javascript基本的数据类型以及对象类型有哪些

Javascript基本的数据类型以及对象类型有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

  有程序设计经验的读者肯定知道,在C或者Java这样的语言中,数据是有类型的,比如用以表示用户名的属性是字符串,而一个雇员的年龄则是一个数字,表示UI上的一个开关按钮的数据模型则为布尔值等等,对数字可能还可以细分为浮点数,整型数,整型数又可能分为长整型和短整型,总而言之,它们都表示语言中的数据的值的类型。

  Javascript基本数据类型有哪些

  在JavaScript中,包含三种基本的数据类型,字符串(String),数值(Number),布尔值(boolean),下面是一些简单的例子:

  var str="Hello,world";//字符串

  var i=10;//整型数

  var f=2.3;//浮点数

  var b=true;//布尔值

  我们可以分别查看变量的值及变量的类型:

  print(str);

  print(i);

  print(f);

  print(b);

  print(typeof str);

  print(typeof i);

  print(typeof f);

  print(typeof b);

  注意,在此处使用的print()函数为rhino解释器的顶层对象的方法,可以用来打印字符串,通常情况下,在客户端,程序员多使用alert()进行类似的动作,alert()是浏览器中JavaScript解释器的顶层对象(window)的一个方法。

  Hello,world

  10

  2.3

  true

  string

  number

  number

  Boolean

  在JavaScript中,所有的数字,不论是整型浮点,都属于"数字"基本类型。typeof是一个一元的操作符,在本章的另外一个小节会专门讲到。

  Javascript对象类型有哪些

  这里提到的对象不是对象本身,而是指一种类型,我们在第三章会对对象进行详细的讨论,此处的对象包括,对象(属性的集合,即键值的散列表),数组(有序的列表),函数(包含可执行的代码)。

  对象类型是一种复合的数据类型,其基本元素由基本数据类型组成,当然不限于基本类型,比如对象类型中的值可以是其他的对象类型实例,我们通过例子来说明:

  var str="Hello,world";

  var obj=new Object();

  obj.str=str;

  obj.num=2.3;

  var array=new Array("foo","bar","zoo");

  var func=function(){

  print("I am a function here");

  }

  可以看到,对象具有属性,如obj.str,obj.num,这些属性的值可以是基本类型,事实上还可以更复杂,我们来看看他们的类型:

  print(typeof obj);

  print(typeof array);

  print(typeof func);

  //将打印出

  object

  object

  function

  读者可能会对print(typeof array)打印出object感到奇怪,事实上,对象和数组的界限并不那么明显(事实上它们是属于同一类型的),但是他们的行为却非常不同,本书的后续章节将两个重要的数据类型做了分别介绍。

  两者之间的转换

  类似与Java中基本数据类型的自动装箱拆箱,JavaScript也有类似的动作,基本数据类型在做一些运算时,会临时包装一个对象,做完运算后,又自动释放该对象。我们可以通过几个例子来说明:

  var str="JavaScript Kernal";

  print(str.length);//打印17

  str为一个字符串,通过typeof可知其type为"string",而:

  var str2=new String("JavaScript Kernal");

  print(typeof str2);

  可知,str2的type为"object",即这两者并不相同,那么为什么可以使用str.length来的到str的长度呢?事实上,当使用str.length时,JavaScript会自动包装一个临时的String对象,内容为str的内容,然后获取该对象的length属性,最后,这个临时的对象将被释放。

  而将对象转换为基本类型则是通过这样的方式:通过调用对象的valueOf()方法来取得对象的值,如果和上下文的类型匹配,则使用该值。如果valueOf取不到值的话,则需要调用对象的toString()方法,而如果上下文为数值型,则又需要将此字符串转换为数值。

  由于JavaScript是弱类型的,所以JavaScript引擎需要根据上下文来"猜测"对象的类型,这就使得JavaScript的效率比编译型的语言要差一些。

  valueOf()的作用是,将一个对象的值转换成一种合乎上下文需求的基本类型,toString()则名副其实,可以打印出对象对应的字符串,当然前提是你已经"重载"了Object的toString()方法。

  事实上,这种转换规则会导致很多的问题,比如,所有的非空对象,在布尔值环境下,都会被转成true,比如:

  function convertTest(){

  if(new Boolean(false)&&new Object()&&new String("")&&new Array()){

  print("convert to boolean")

  }

  }

  convertTest();//convert to Boolean

  初学者容易被JavaScript中的类型转换规则搞晕掉,很多情况下会觉得那种写法看着非常别扭,其实只需要掌握了规则,这些古怪的写法会大大的提高代码的性能,我们通过例子来学习这些规则:

  var x=3;

  var y=x+"2";//=>32

  var z=x+2;//=>5

  print(y);

  print(z);

  if(datamodel.item){

  //do something...

  }else{

  datamodel.item=new Item();

  }

  这种写法事实上具有更深层次的含义:

  应该注意到,datamodel.item是一个对象(字符串,数字等),而if需要一个boolean型的表达式,所以这里进行了类型转换。在JavaScript中,如果上下文需要boolean型的值,则引擎会自动将对象转换为boolean类型。转换规则为,如果该对象非空,则转换为true,否则为false.因此我们可以采取这种简写的形式。

  而在传统的编程语言(强类型)中,我们则需要:

  if(datamodel.item!=null){

  //do something...

  }else{

  datamodel.item=new Item();

  }

  数据类型的判断

  前面讲到JavaScript特性的时候,我们说过,JavaScript是一个弱类型的语言,但是有时我们需要知道变量在运行时的类型,比如,一个函数的参数预期为另一个函数:

  function handleMessage(message,handle){

  return handle(message);

  }

  当调用handleMessage的函数传递的handle不是一个函数则JavaScript引擎会报错,因此我们有必要在调用之前进行判断:

  function handleMessage(message,handle){

  if(typeof handle=="function"){

  return handle(message);

  }else{

  throw new Error("the 2nd argument should be a function");

  }

  }

  但是,typeof并不总是有效的,比如下面这种情况:

  var obj={};

  var array=["one","two","three","four"];

  print(typeof obj);//object

  print(typeof array);//object

  运行结果显示,对象obj和数组array的typeof值均为"object",这样我们就无法准确判断了,这时候,可以通过调用instanceof来进行进一步的判断:

  print(obj instanceof Array);//false

  print(array instanceof Array);//true

  第一行代码返回false,第二行则返回true。因此,我们可以将typeof操作符和instanceof操作符结合起来进行判断。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

类型 对象 数据 字符 字符串 事实 事实上 函数 上下 上下文 属性 数字 方法 规则 语言 布尔 代码 例子 内容 写法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 第一届网络安全研究生 怎么爬取数据库 济南网搜网络技术有限公司 南京唯欧士网络技术有限公司 服务器管理器查看有哪些用户 原神21版本更新服务器维护吗 网络安全课程设计的案例 关于校园网络安全提案 好族网络技术有限公司 服务器EN什么意思 研祥服务器支持麒麟操作系统吗 浪讯网络技术有限公司 顺平县检察院网络安全课堂 网络安全示范小区重庆 河南商务圈互联网科技有限公司 解决校园网络安全的措施 vps服务器和云服务器 数据库技术 课程设计报告 互联网高科技案例 菏泽 软件开发 网络安全信息化规章制度 嘉宾网络技术高峰论坛 宝德服务器开启虚拟化设置 白银交易软件开发 美国网络安全股票为何涨那么多 网络安全解析http 柬埔寨软件开发工资 q清华大学网络安全考研 不处于同一网段下的本地服务器 河钢集团软件开发岗位可以吗
0