javascript数据类型分为基本数据类型与复杂数据类型

基本数据类型包括:string,number,boolean,null,undefined,symbol(es6)

复杂数据类型包括:object

1.基本数据类型与复杂数据类型存储上的区分

基本数据类型存储在内存中的栈里面,复杂数据类型存储在内存中的堆里面。

基本数据类型的变量指向内存中的数据,而复杂数据类型指向的实际上是内存中的地址,然后通过地址获取数据

基本数据类型值的存储过程:先在栈里面声明一个变量num,并且赋值为undefined,然后将值1赋值给变量num,声明变量n,并且赋值undefined,然后将变量num的值赋值给n(这一过程实际是在栈中有声明了另一个存储区域,num与n不是通过指针指向同一个栈内存,因此改变num的值并不会使n的值发生改变)

1.var num;    // undefined
2:num = 1;    // 1
3:var n;     // undefined
4:n = num;    // 1
5:num = 2    // 2
6:console.log(n)// 1

复杂数据类型值的存储过程:复杂数据类型在声明了之后,会在堆内存中开辟一块内存区域,用来存放数据。当创建一个对象obj={a: 1}时,会在对内存中开辟一块空间,用来存储对象中的数据。

var obj = {a: 1}
var obj1 = obj;
obj.a = 2;
console.log(obj1.a) //

栈与堆的区分:https://blog.csdn.net/K346K346/article/details/80849966

2.javascript数据类型的区分

在平常的使用过程中,常见的类型判断方法 typeof

var sun1 = undefined;
var sun2 = null;
var sun3 = true;
var sun4 = 10;
var sun5 = '123'
var sun6 = {a: 1};
var sun7 = [1,2,3];
var sun8 = function(){}
var sun9 = new Date(); console.log(typeof sun1); // undefined
console.log(typeof sun2); // object
console.log(typeof sun3); // boolean
console.log(typeof sun4); // number
console.log(typeof sun5); // string
console.log(typeof sun6); // object
console.log(typeof sun7); // object
console.log(typeof sun8); // function
console.log(typeof sun9); // object

看到上面的结果,发现什么问题没?很多的数据类型通过typeof判断实际是不能被检测出来的,比如null,new Date()等...

那么,有什么其他的方法可以进行类型检测吗?

Object.prototype.toString.call(),返回一个表示该对象的字符串,例如"[object type]",type代表了数据的类型。

var toString = Object.prototype.toString;

toString.call(undefined)      //  [object Undefined]
toString.call(null) // [object Null]
toString.call(true) // [object Boolean]
toString.call(10) // [object Number]
toString.call('123') // [object String]
toString.call({}) // [object Object]
toString.call([1,2,3]) // [object Array]
toString.call(new Date) // [object Date]
toString.call(function(){}) // [object Function]
toString.call(Math) // [object Math] // JavaScript 1.8.5后修改
toString.call(undefined) // [object Undefined]
toString.call(null) // [object Null]

参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

每天五分钟-javascript数据类型的更多相关文章

  1. 【JavaScript的五种基本数据类型及转换】

    js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型就是特殊的(Object). "undefined& ...

  2. JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符

    JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  3. javascript中五种基本数据类型

    前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...

  4. 前端(五):JavaScript面向对象之内建对象

    一.数据类型 js中数据类型分为两种,原始数据累次能够和引用数据类型. 1.原始数据类型 Undefined.Null.Boolean.Number.String是js中五种原始数据类型(primit ...

  5. 关于 JavaScript 数据类型判断

    在 JavaScript 中,有 undefined.null.number.string.boolean 五种基本数据类型,另外,有一种复杂数据类型 object ,类似于 C# 中值类型.引用类型 ...

  6. javascript数据类型、初始化

    Javascript数据类型有6种: 数值型数据类型(Number): 字符串(String): 布尔型数据(Boolean): 对象数据(Object): 空(Null): 未定义(Undefine ...

  7. 五分钟学习React(三):纯HTML代码搭建React应用

    上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...

  8. 五分钟学习React(一): 什么是React

    在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...

  9. js基础--javaScript数据类型你都弄明白了吗?绝对干货

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...

随机推荐

  1. ASP.NET Core - 利用Windsor Castle实现通用注册

    问题引入 在ASP.NET Core - 依赖注入这篇文章里面,我们知道了如何利用ASP.NET Core原生的容器来实现依赖注入的,那我们为什么要替换掉默认的 IoC容器呢?从ASP.NET Cor ...

  2. 为什么Eureca Client要分成服务提供者和服务消费者呢?

    [学习笔记]转载 6)为什么Eureca Client要分成服务提供者和服务消费者呢? 通 常来讲,服务提供方是重量的耗时的,所以可能在n台机器上.而服务消费方是轻量的,通过配置ribbon和@Loa ...

  3. FontAwesome 图标字体库的使用

    在前端开发中,许多新手常会遇见一个问题,参考的网页上有类似下图的图标,但在资源里却找不到对应的文件,这是因为这些网页使用了图标库.这里介绍一种常见的图标库——FontAwesome的使用. 1.登录F ...

  4. GIS之家资源

    分享资源之arcgis软件系列 arcgis10.0(arcgis desktop以及arcgis server):下载 arcgis10.1(arcgis desktop以及arcgis serve ...

  5. Git学习:如何在Github的README.MD文件下添加图片

    格式如下: ![image](图片的绝对路径) 关于图片的绝对路径: 必须把图片上传到github的代码仓库里,再将其图片的网址复制到括号里才可以,不能够直接把图片复制到readme.md文件里面,这 ...

  6. openlayers4 入门开发系列之地图空间查询篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  7. react-native 金币彩带雨下落动画

    日常项目中,经常遇到一些表情雨/金币雨/彩带雨 等下落的动画,之前做android原生的时候,写过类似的效果,主要通过自定义view 在onDraw里绘制下落的过程,具体可以看下我的这篇github地 ...

  8. Android 上传图片到服务器二--------调用相机7.0以上权限问题

    [目录] (一)上传图片到服务器一 ---------------------------------Android代码 (二)上传图片到服务器二--------------------------- ...

  9. Win10下搭建Git服务器

    一. 搭建Git服务器环境前的必要准备 1.Windows10 2.Java环境 3.GitBlit服务器 4.Git版本管理工具 二. 开始搭建 第一步.安装JAVA运行环境 https://www ...

  10. 来一波C#发送邮件

    1.所用工具和资源:VS2012   在.NET Frameword类库中提供SmtpClient类(System.NET.Mail) 2.运行截图 3.具体代码实现如下: using System; ...