前端基础——js数据类型及判断方法
一、数据类型
我们通常熟知的数据类型有六种,包括5种基本数据类型(Number, String, Boolean, Undefined, Null)和一种引用数据类型(Object)。ES6又新增了一个基本数据类型Symbol,所以现在应该是七种数据类型。
注:有些地方会把引用类型分为对象(Object)、数组(Array)、函数(Function)三种,还有博客中提到了chrome 67中的新功能BigInt类型,我这里暂时不算进去。
1、Number
数字类型,包括整数和浮点数。
有一个特殊的值NaN,即非数值。js 规定NaN不等于NaN,可以用 isNaN() 来检测是否是非数值型。
2、String
字符串类型,单双引号都行。
3、Boolean
布尔类型,只有两个值,true和false。
4、Undefined
声明了变量,但是没有初始化,则这个变量的类型就是undefined,且其默认初始化值为undefined。
5、Null
null类型的默认值是null,从逻辑角度讲,是表示一个空对象指针。
注:区分undefined和null——当一个变量声明后,未初始化,则该值为undefined;如果这个值是为了保存对象,则修改默认初始化值为null。 所以当检测其类型时,会显示类型为object。
6、Object(Data、Function、Array等)
该类型实例化的对象,是一组数据和功能(函数)的集合。
实例化对象的过程有两种,一种是通过new操作符,一种是通过对象字面量表示法。
Array()、Date()、function()类型,都是从object继承的。
7、Symbol(ES6 新增)
Symbol 类型本质上是一种唯一标识符,可用作对象的唯一属性名。
唯一性
Symbol 类型的对象永远不相等,即使是用同一个变量生成的值也不相等。

隐藏性
for···in,object.keys() 不能访问,可以用专门针对Symbol的方法来获取。

Symbol 类型的一些应用和参考
https://www.cnblogs.com/linziwei/p/10818101.html
https://blog.csdn.net/qq_33408245/article/details/82953143
二、判断方法
1、typeof
typeof可以区分一部分数据类型,结果如下:
typeof   123   //Number
typeof   'abc'  //String
typeof    true       //Boolean
typeof    undefined   //Undefined
typeof    null        //Object
typeof    { }           //Object
typeof    [ ]           //Object
typeof    console.log()       //Function
2、判断null、object和array
从上面的结果可以看出,用typeof检测 null、数组、对象的结果都是Object,所以需要用其他方法区分他们的类型。
判断null
可以用===null来判断。
判断object和array
① isArray
Array.isArray([]) //true
Array.isArray({}) //false
② instanceof
[] instanceof Array //true
{} instanceof Array //false
③ constructor
{}.constructor    //返回object
[].constructor    //返回Array
④ Object.prototype.toString.call
Object.prototype.toString.call([]) //["object Array"]
Object.prototype.toString.call({}) //["object Object"]
END-------------------------------
○延伸两句○
深拷贝:修改新变量的值不会影响原有变量的值。默认情况下基本数据类型都是深拷贝。
浅拷贝:修改新变量的值会影响原有的变量的值。默认情况下引用类型都是浅拷贝。
前端基础——js数据类型及判断方法的更多相关文章
- js数据类型的判断方法
		
判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...
 - js中的数据类型及判断方法
		
ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型. 基本类型 ● Boolean ● Null ● Undefined ● Number ● String ● Symbol (ECM ...
 - 前端面试:js数据类型
		
js数据类型是js中的基础知识点,也是前端面试中一定会被考察的内容.本文旨在知识的梳理和总结,希望读者通过阅读本文,能够对这一块知识有更清晰的认识.文中如果出现错误,请在评论区指出,谢谢. js数据类 ...
 - 鉴别JS数据类型的全套方法
		
ECMAScript 标准定义了 7 种数据类型:Boolean.Null.Undefined.Number.String.Symbol(ES6新增)和Object,除Object以外的那6种数据类型 ...
 - JS数据类型的判断
		
在 ECMAScript 规范中,共定义了 7 种数据类型,分为 基本类型 和 引用类型 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefine ...
 - 前端基础------JS
		
JS中的语句要以分号 ; 为结束符. JS语言基础: 1, JS 的变量名可以使用 下划线, 数字, 字母, $ 组成. 不可以是数字开头 2, 声明变量使用var 变量名. 的格式来进行声明. v ...
 - js数据类型及判断数据类型
		
众所周知,js有7种数据类型 1. null 2. undefined 3. boolean 4. number 5. string 6. 引用类型(object.array.function) 7. ...
 - js字符串常用判断方法
		
转自:http://blog.sina.com.cn/s/blog_6819fa800100j5t6.html 一.方法介绍 function obj$(id) ...
 - 前端基础js(四)
		
一. js [1] html:用于显示页面 [2] css:用于描述页面的样式 [3] javaScript:用于描述页面的行为 二.js中三大部分内容 [1] 基本语法:函数.对象.事件类型(变量, ...
 
随机推荐
- 869. Reordered Power of 2
			
Starting with a positive integer N, we reorder the digits in any order (including the original order ...
 - G - Number Transformation(BFS+素数)
			
In this problem, you are given an integer number s. You can transform any integer number A to anothe ...
 - hdu4814 模拟(黄金分割进制转换)
			
题意: 给你一个十进制数,让你把他转化成Q进制数,Q是黄金分割比 = (1+√5)/2. 思路: 首先要明确的就是虽然q是实数,但是依然可以转换成q进制数,因为任何数num, ...
 - 分子动力学模拟软件VMD的安装与使用
			
技术背景 在分子动力学模拟过程中会遇到一些拓扑结构非常复杂的分子模型,所谓的复杂不仅仅是包含众多的原子,还有各种原子之间的成键关系与成键类型等.这时候就非常能够体现一个好的可视化软件的重要性了,这里我 ...
 - 【python】Leetcode每日一题-132模式
			
[python]Leetcode每日一题-132模式 [题目描述] 给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j &l ...
 - Redis中几种数据类型的基本操作指令
			
Redis基本指令 单线程+多路IO复用技术 1. Key 指令 作用 keys * 查看当前库所有键 exists <key> 判断此键是否存在 type <key> 查看键 ...
 - 【opencv】Java实现opencv 调用本地摄像头,实现人脸识别、人形识别、人眼识别
			
本博客为老魏原创,如需转载请留言咨询. 效果预览:(没办法,为了效果只能上像了,丑别介意.哈哈..) 上代码: 1 package com.lw.test; 2 3 import java.awt.G ...
 - myysql 不能远程访问的解决办法
			
1.通过navicat或者命令行,将user表中原来host=localhost的改为host=% 命令行方式: mysql> update user set host = '%' where ...
 - 第一周JVM核心技术-工具与GC策略
			
一. JDK工具 1.1 内置命令行工具 工具 简介 jps/jinfo 查看java进程 jstat 查看JVM内部GC信息 jmap 查看JVM堆或类占用空间信息 jstack 查看线程信息 jc ...
 - Elasticsearch入门,看这一篇就够了
			
目录 前言 可视化工具 kibana kibana 的安装 kibana 配置 kibana 的启动 Elasticsearch 入门操作 操作 index 创建 index 索引别名有什么用 删除索 ...