每天五分钟-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 ...
随机推荐
- ElasticSearch入门 附.Net Core例子
1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档. Elas ...
- EF Core in Action 中文翻译 第一部分导航
Entityframework Core in action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core ...
- Java多线程与并发面试题
1,什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一 ...
- css控制元素高度自适应
可以采用元素定位 + padding 的方式使特定元素高度自适应. css 样式: html,body{ height:100%; margin:; padding:; } .wrap { heigh ...
- CODING 研发管理系统上线全球加速,助力企业跨区域协作
CODING 研发管理系统现已全面支持全类型代码仓库的 全球加速访问. 随着国内互联网红利的日趋枯竭与全球互联网的加速普及.越来越多的企业开始走出国门,将目光投向全世界,搭建跨国体系.跨出国门的中国企 ...
- ArcGIS API For Javascript_4.8-渲染器SimpleRenderer
SimpleRenderer require(["esri/renderers/SimpleRenderer"], function(SimpleRenderer) { /* co ...
- 开源ERP Odoo仓存功能模块深度应用(一)
基本功能 库位 库位是一个逻辑存货区,可以是一个物理库区,可以是一个货架.货架上的一个货位.库位可以有子库位 库位有虚拟库位和实际库位,实际库位是实际存放货物的库位,虚拟库位是因复式库存记账而虚构的库 ...
- 【Android】用Cubism 2制作自己的Live2D——来制作动态壁纸吧!
前言- Andorid SDK下载 baidu云 提取码:19jm 这次我们就来研究一下官方的例子之一的liveWallPaper,也就是开发Android的动态壁纸 先来看看这个例子运行的结果: ...
- ionic3 生命周期
ionic3 总共有8个钩子函数,分别是:onPageLoaded,onPageWillEnter,onPageDidEnter,onPageWillLeave,onPageDidLeave,onPa ...
- SQLServer之删除数据库架构
删除数据库架构注意事项 要删除的架构不能包含任何对象. 如果架构包含对象,则 DROP 语句将失败. 可以在 sys.schemas 目录视图中查看有关架构的信息. 要求对架构具有 CONTROL 权 ...