欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript数据类型检测

程序员文章站 2022-06-05 08:05:45
...

1.数据类型

基本数据类型:

  • Symbol(ES6新增,表示独一无二的值)、Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)

复杂数据类型:

  • 对象(包括对象、数组、函数等)

两种类型区别:

  • 存储位置不同:基本类型是存储在栈中的简单数据段,复杂数据类型是存储在堆中的对象。
  • 访问方式不同:基本数据类型按值访问,复杂类型按引用访问。

2.使用typeof进行数据类型检测

原始数据:typeof运算符返回一下原始类型之一

  • String
  • number
  • boolean
  • undefined
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>
<script>
    console.log(typeof "jay")   // string
    console.log(typeof (7+8))   // number
    console.log(typeof true)   // boolean
    console.log(typeof undefined)   // undefined
</script>
</body>
</html>

复杂数据:运算符可返回以下两种类型之一

  • function
  • object(typeof运算符把对象、数组或null返回object)
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>
<script>
    console.log(typeof null)   // object
    console.log(typeof [])   // object
    console.log(typeof {})   // object
    console.log(typeof function myfunction(){})   // function
</script>
</body>
</html>

2.使用constructor进行数据类型检测

constructor是Object类型的原型属性,它能够返回当前对象的构造器(类型函数等)。利用该属性,可以检测符合型数据的类型,如对象、数组和函数等。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>
    var a = {};
    var b = [];
    if(a.constructor == Object){
      console.log("a是对象");
    }
    if(b.constructor == Array){
      console.log("b是数组")
    }
  </script>
</body>
</html>

undefined和null没哟constructor属性,不能够直接读取,否则会抛出异常。因此,一般应先检测值是否为undefined等特殊值,然后在调用constructor属性。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  <script>
    var a = undefined;
    console.log(a && a.constructor);  // undefined
    var b = null;
    console.log(b && b.constructor);  // null
  </script>
</body>
</html>

数值直接量也不能直接读取constructor属性,应该先把它转换为对象再调用。

console.log(1.constructor);   // 抛出异常
console.log((1).constructor);  // 返回Number类型
console.log(Number(10).constructor);  // 返回Number类型

3.使用toString进行数据类型转换

在对象上调用object的原型方法toString(),就会返回统一格式的字符串表示。

a = [];
b = {};
c = function myfuction(){}
console.log(toString.apply(a));  // [object Array]
console.log(toString.apply(b));  // [object Object]
console.log(toString.apply(c));  // [object Function]
相关标签: Javascript基础