阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 数据类型初识

      JS的数据类型;通过typeof来检测,得到的数据类型有

      • String
      • number
      • boolean
      • null
      • undefined
      • Object

      Object是一切数据的基础;

      ECMAScript中有5种简单的数据类型,也称为基本数据类型;

      Stringnumberbooleannullundefined

      一种复杂数据类型,也称为引用数据类型(typeof检测还有一种特殊的Funtion)

      Object

      object本质是由一组无序的键值对组成的;

      对我们来说,类型是值的内部特征,它定义了值拥有的方法和属性,以使其区别于其他值;

      我们对 18"十八"采取不同的处理方法,比如对数字18采用数学运算,字符串"十八"输出到页面或者别的事情;

      这种基于用途的不同,就是类型存在的意义

      typeof操作符;

      console.log(typeof qqqq);	//undefined,这个变量没有定义,但是不会报错;qqqq此时是变量;
      console.log(typeof (222));	//number,是一个数字; typeof是操作符而不是方法,所以后面可以加()也可以不加;
      console.log(typeof "222");	//string,是一个字符串
      console.log(typeof false);	//boolean,是一个布尔值
      console.log(typeof {});		//object 是一个对象
      console.log(typeof null);	//objecy 是一个对象,在javascript里,null是一个空指针;
      console.log(typeof function(){});	//function,是一个方法,是“可调用对象”,也是属于object类型的;js里万物皆对象
      

      typeof null 这个结果一定要记住,它返回不是null而是object

      从技术的角度上讲,函数在ECMAScript中是对象,不是一种数据类型,属于对象,在就是里万物皆对象的,但是,函数也确实有一些特殊的属性,因此通过typeof操作符来区分也是有必要的;

      函数不仅是对象,还可以拥有属性

      function fn(b,c){
          console.log(b);
          console.log(c);
      }
      console.log(fn.length)//2
      

      因为函数声明了两个命名参数 b和c,所以length值为2;

      typeof 的返回值是一个字符串类型的数据:

      typeof检测任何数据,返回的都是一个字符串,两次和两次以上的连续typeof结果肯定都是string;

      //两次检测 结果是string
      console.log("开始2次typeof");
      console.log(typeof typeof qqqq);        //"string"
      console.log(typeof typeof 222);         //"string"
      console.log(typeof typeof "222");       //"string"
      console.log(typeof typeof {});          //"string"
      console.log(typeof typeof null);        //"string"
      console.log(typeof typeof function(){});//"string"
      

      变量和数据之间的关系

      变量是数据的代言人,可以更方便快捷的操作数据;

      变量是没有类型的,只有值才有,变量可以随时持有任何类型的值

      在变量执行typeof操作时候,得到的结果并不是该变量的类型,而是该变量持有值的类型;

      var a = 18;
      console.log(typeof a);//"number"
      
      a = true;
      console.log(typeof a)//"boolean"
      

      本章总结:

      JS的核心语言特性在ECMAScript中定义的;ECMAScript包含了所有基本用法,操作符,数据类型,以及完成基本的计算任务所必须的对象;但是没有对取得输入和产生输出的机制做出规定;

      数字类型,包含:正数、负数、零、小数、以及特殊的NaN;

      NaN:not a number不是一个数;但是属于number数据类型;用typeof检测的返回结果是number;NaN和NaN不相等;

      NaN==NaN	//false
      typeof NaN	//number;
      

      isNaN:检测一个值是否为有效的数字,不是有效数字返回的是true;是有效数字返回的false;

      isNaN("anbang")	//true;
      isNaN("12")		//false;
      

      Number:将其他的数据类型强制转换为数字类型,如果是将一个字符串转化为数字,需要所有的字符都是有效的数字,

      Number("23")		//23
      Number("23px")		//NaN
      

      parseIne/parseFloat:将其他的数据类型转换为数字类型(相对于Number来说没有那么的强制),如果是将一个字符串转化为数字;只需要从左到右的依次查找即可。把有效的数字进行转化;

      parseInt("23px")	//23;
      

      parseFloat可以在parseInt的基础上转化小数(parseInt是不能转换成浮点数的)

      String:字符串数据类型,在js中用""或者''包起来的都是字符串;字符串由字符组成,字符的个数就是字符串的长度,每一个字符的位置都可以通过索引来表示;

      • str[0]就是找到第一个字符;

      • str.length就是字符串的长度;

      Boolean:布尔类型,只有两个值:true/false;

      !和!!

      !是取反的意思;先将其它的数据类型转换为布尔类型;然后在取反;

      !!是将其他的数据类型转换为不二类型,相当于Boolean;

      Object:对象数据类型,由多组属性名和属性值组成的(key:value)

      对象中有几种常见的形式;

      {}是对象
      []是数组
      /^$/是正则...
      

      js中规定一个对象的属性名是不可重复的(这句话一定要记住,处理很多事务的时候,经常会用到对象的属性来进行操作;)

      typeof:检测数据类型的运算符;返回的结果是一个字符串;里面包含了对应的数据类型;例如”object”在JS中typeof null的结果也是object;

      Instanceof:检测某一个实例是否属于这个类;在类的继承中检测的不是很严禁;

      目录
      目录