每天五分钟-javascript数据类型
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数据类型的更多相关文章
- 【JavaScript的五种基本数据类型及转换】
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型就是特殊的(Object). "undefined& ...
- JavaScript 基础(一) - JavaScript的引入方式,JavaScript 变量命名规则,JS 的五种基本数据类型,ECMAScript 算数运算符,逻辑运算符
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- javascript中五种基本数据类型
前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...
- 前端(五):JavaScript面向对象之内建对象
一.数据类型 js中数据类型分为两种,原始数据累次能够和引用数据类型. 1.原始数据类型 Undefined.Null.Boolean.Number.String是js中五种原始数据类型(primit ...
- 关于 JavaScript 数据类型判断
在 JavaScript 中,有 undefined.null.number.string.boolean 五种基本数据类型,另外,有一种复杂数据类型 object ,类似于 C# 中值类型.引用类型 ...
- javascript数据类型、初始化
Javascript数据类型有6种: 数值型数据类型(Number): 字符串(String): 布尔型数据(Boolean): 对象数据(Object): 空(Null): 未定义(Undefine ...
- 五分钟学习React(三):纯HTML代码搭建React应用
上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...
- 五分钟学习React(一): 什么是React
在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...
- js基础--javaScript数据类型你都弄明白了吗?绝对干货
欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...
随机推荐
- 【Python3爬虫】最新的模拟登录新浪微博教程
一.写在前面 首先呢,由于之前重装系统,又要重新配置环境,然后还有一些别的事,导致我一直没有写爬虫了,不过现在又可以继续写了. 然后我这次说的模拟登录新浪微博呢,不是使用Selenium模拟浏览器操作 ...
- 学习JVM是如何从入门到放弃的?
前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干 ...
- Asp.Net Core Web应用程序—探索
前言 作为一个Windows系统下的开发者,我对于Core的使用机会几乎为0,但是考虑到微软的战略规划,我觉得,Core还是有先了解起来的必要. 因为,目前微软已经搞出了两个框架了,一个是Net标准( ...
- Python库的安装
window下python2.python3安装包的方法 一.在线安装 安装好python.设置好环境变量后,在python安装目录下Script文件夹内会存在pip.exe和easy_install ...
- json转js对象方法,JS对象转JSON方法
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- DokuWiki的发现之旅
★DokuWiki介绍 Wiki是什么?是一种允许一群用户用简单的描述来创建和连接一组网页的社会计算系统,可以让人们在web的基础上对Wiki文本进行浏览.创建和更改,是一种人类的知识的网络系统,有助 ...
- NFS挂载异常 mount.nfs: Input/output error
[root@localhost ~]# vi /etc/exports #增加/nfs 192.168.10.132(rw,no_root_squash,no_all_squash,async) [r ...
- 如何修复使用WSUS进行升级Win 10 更新1809的报错(0x8024200)
备注:该文档有另一个姊妹篇,介绍如何修复下游服务器一直有处于需要文件下载的状况. /* Style Definitions */ table.MsoNormalTable {mso-style-nam ...
- ERROR 1129 (HY000): mysqladmin flush-hosts
mysql报错:ERROR 1129 (HY000): Host * is blocked because of many connection errors; unblock with 'mysql ...
- AMBARI Blueprint 使用文档
Introduction Notable JIRAs API Resources and Syntax Blueprint Usage Overview Step 0: Prepare Ambari ...