优雅的JavaScript-数据类型

时间:2022-08-22 17:16:53

变量的数据类型


原始数据类型     引用数据类型
Undefined       对象
Null             数组
Boolean         函数
Number
String

原始数据类型---Undefined


1.Undefined 类型只有一个值,即特殊的Undefined;
  在使用var 声明变量但未对其进行初始化,这个变量值为Undefinded
  如:var message;
2.Undefinded指的是未定义的类型,如果alert(a)一个不存在的变量,会直接报错,而不是Undefined
可见Undefined和正真未声明还是有区别:
      1.他是一种特殊类型
      2。但是typeof未定义类型或者不存在不变量都返回Undefined
  例如:
  <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>


<script type="text/javascript">
//alert(a);//未定义就使用会报错
//   var b;
//alert(b);
//
//alert(typeof b);
var c=5;
alert("c:"+c);


</script>
</body>
</html>




原始类型---null


它只有一个专用值null,即它的字面量,值undefined实际上是从null派生来的,因此在ECMAScript中将两者定义为相等

例如:
  alert(null==undefined);//输出true
  尽管两者的值相等但他们的含义不同
  undefined是声明了变量但未对其初始化时赋予该变量的值
  null用于表示尚未存在的对象,如果函数或者方法要返回对象,此时如果找不到部队向,通常直接返回null
注意:
  如果单纯定义一个变量的初始化值为null,他返回的类型为object

原始数据类型---Boolean


只有两个值 true、false ,区分大小写和Java里一样
例如:
 
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
//var flag=true;
//alert(typeof flag);
//alert(2==5);
alert(undefined==null);
</script>
</body>
</html>

原始数据类型---number


1.数值的分类:
  1.整型:
      八进制:
      十六进制:
      十进制:
  2.浮点型
  3.特殊值:
      Infinity   无穷大
      NaN(0/0)     不是数值类型



如:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
  var num = 6.34;
  /*//定义八进制,一般以0开头,组成部分0~7之间的数字
    var num1=012;
    //十六进制,一般以0X开头,组成部分0~9,A~F之间的数字和字符
    var num2=0x78;
    var num3=-3/0;
    //infinity和-infinity,number数据类型的两个特殊值

    var num4=-infinity;
    var num5=0/0;//NaN
    //NaN是number类型的一个特殊值,不等于任何类型,连自己都不相等*/
  /* alert(NaN == NaN);
  alert(typeof num);*/

  var num6=28;//默认就是28
  var num7=.9//默认为0.9
  //通过isFinite()判断一个数是否有限值,有限就返回true,否则返回false
//   alert(isFinite(-6/0));
  //isNaN():判断是否是非数字有就返回true,否则返回false
alert(isNaN("ssfdg"));
</script>
</body>
</html>

浮点型:


1.浮点型定义:
  浮点数字:该数字钟包含一个小数点,而且小数点后面必须至少有一位数字
     
 
2.浮点型数据的类型:
  1.直接含有小数点 如:3.15
  2.还可以使用指数计数法(实数后面跟一个e或者E,后面跟正负号,后面再加上一个整型的指数)1.243243E=-32

特殊值


1.Infinity:无穷大
  1.Infinity:正无穷大
  2.-Infinity:负无穷大
通过isFinite()判断是否有限大
2.NaN
  1.代表非数字值的特殊值,该属性用于指示某个值不是数字
  2.NaN有两个特点:
      1.任何和NaN的操作都是会返回NaN
      2.NaN与任何数值都不相等,包括自身
  3.不能用number.Nan比较来检测一个值是否是数字,而是使用isNaN()来比较
  4.isNaN()函数如果X是特殊的非数字值NaN
    例如:
        alert(isNaN(3));//false
        alert(isNaN(“blue”));//true
       
        alert(isNaN(true));//false
        alert(isNaN(null));//false
        alert(isNaN(undefined));//true


原始数据类型---String


1.由单引号或者双引号括起来的字符序列
如:“122”,
2.转义字符:
  用一些普通的字符的组合来替代一些特殊字符,由于其组合改变了原来字符表示的含义,称之为转义
  1.字符型常量:表示的值是字符类型变量所能包含的值,通常用AscII表达式来表示一个字符常量
  或者可以用单引号或者双引号内加上反斜杠表示转义字符
  转义字符:
      \'   单引号
      \"   双引号
      \&   和号
      \\   反斜杠
      \n   换行符
      \r 回车符
    \t   制表符
    \b   退格符
    \f   换页符
 

类型的转换


1.隐式转换
2.显示转换

隐式转换


1.转换成布尔类型
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
/*   //Undefined自动转换成false
  var a;
  if(a){
    alert("true")
  }else{
      alert("false");
  }
//null自动转换成false
  if(null){
      alert("转换成true");
  }else{
      alert("转换成false");
  }*/
//nnmber --->boolean
//0,0.0,NaN-->false   其他数值转换成true
/*
* String---》Boolean
* ""转换false;
* 对象转换成true
*
* */
  var num=new Object();
  var date=new Date();
  if(date){
      alert("转换成true ");
  }else{
      alert("转换成false");
  }



</script>
</body>
</html>

结论:
  1.Undefined--->false
  2.null----》false
  3.数值 0,0.0 ,NaN---->false   其他数值都是true
  4.字符串   ""--->false   "有内容"----》true
  5.其他对象都是true

2.转换成数值类型
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
/*
undefined---->NaN
null---->0
boolean--->number 类型
    true----》1
    false----》0
String---->number类型
  ""---->0
  "234"----->234
  "a123"----->NaN
  "0x90"---->转换成十六进制对应的十进制

*/
alert("0x90t"-6);
</script>
</body>
</html>

结论:
   
undefined---->NaN
null---->0
boolean--->number 类型
    true----》1
    false----》0
String---->number类型
    ""---->0
  "234"----->234
  "a123"----->NaN
  "0x90"---->转换成十六进制对应的十进制

3.转换成字符串类型

结论:
  number----->String
  23---->"23"
  NaN--->"NaN"
  infinity----->"infinity"
boolean----->string
    false--->"false"
    true---->"true"
   
    undefined---String
      undefined---->"undefined"

显示转换


1.Boolean类型
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
//Boolean();小括号里面写的是参数,把要转换的值放进小括号里,就得到一个Boolean类型的值
/*undefined转换成false
  null转换成false
  number---->boolean
      0,0.0 ,NaN---->false
      其他数值为true

  String----》Boolean*/
      var flag=Boolean(new Date());
      alert(flag+" "+typeof (flag))
//flag----》true



</script>
</body>
</html>

结论:
  类型转换规则Boolean();
      0,-0----》false   1,2,3---->true   NaN--->false
      空字符串------>false   其他为true
      undefined------>false
      null----->false
     
显示转换---数值类型转换

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script type="text/javascript">
var str="23.34dhfdshfkjhkds";
var str1="23.44vfdsgf";
alert(parseInt(str));
var num=parseFloat(str1);
alert(num);
</script>
</body>
</html>

结论:
  Numbetr()可以将其他类型转换成数值类型
    undefined--->NaN
    null---->0
    true---->1
    false---->0
    字符串--->如果可以解析为数值,则转换成数值,否则为NaN,0
    空字符串----》0
   
   
    parseInt()和ParseFloat()使用----->只能将字符串转类型换成数值类型
    1.字符串全部为数字,“234“------》234
    2.字符串中包含数字和非数字(从左往右截取,直到遇到第一个非数字为止)
    “a234”---->NaN
    "234hfshdkjf"----->234
    ""----->NaN
   
   
   
    显示转换----字符串类型
   
    结论:
      1.String()函数可以将其他的类型强制转换成字符串类型
      数值-----》数值本身
      字符串-----》字符串本身
      true---》“true”
      false----》“false”
      null--->“null”