谈谈JavaScript数据类型
2017-10-11 14:40
441 查看
很多新手很容易弄不清楚js的数据类型,在这里给大家总结一下。
空值(null)
未定义(undefined)
数字(number)
字符串(string)
布尔值(boolean)
对象(object)
符号(symbol ES6新增)
以上代码都很好理解,但是:
上述代码有两个疑问:
1. 为什么 typeof null 是‘object’而不是 ‘null’?
2. 为什么typeof function a(){}是 ‘function’而不是 ‘object’?‘function’为什么不是基本类型之一?
那么,得怎么判断一个变量是null类型呢了?
因为还有一种特殊情况:
说明数组也是object的一个子类型。
七种数据类型
JavaScript一共七种数据类型(可以召唤神龙了):空值(null)
未定义(undefined)
数字(number)
字符串(string)
布尔值(boolean)
对象(object)
符号(symbol ES6新增)
判断类型
在JavaScript中,主要利用 typeof 判断数据类型,但是仔细看下面的代码:typeof undefined=== 'undefined' //true typeof 42 === 'number' //true typeof '42' === 'string' //true typeof {age:24} === 'object' //true typeof true === 'boolean' //true typeof Symbol() === 'symbol' // true
以上代码都很好理解,但是:
typeof null == 'object' //true typeof function a(){...} === 'function' //true
上述代码有两个疑问:
1. 为什么 typeof null 是‘object’而不是 ‘null’?
2. 为什么typeof function a(){}是 ‘function’而不是 ‘object’?‘function’为什么不是基本类型之一?
为什么 typeof null 是‘object’而不是 ‘null’?
解答:这是JavaScript的一个bug,由来已久,而且未来也不会修复。因为已经随JavaScript存在了这么多年,涉及太多系统了,如果真的修复,会导致大量的web系统不能够正常工作。那么,得怎么判断一个变量是null类型呢了?
var a = null; (!a && typeof a == 'object');//true
为什么typeof function a(){}是 ‘function’而不是 ‘object’?‘function’为什么不是基本类型之一?
解答:‘function’并不是JavaScript的内置类型之一,它实际上是object的一个“子类型”。但是为什么返回的是‘function’而不是‘object’,这个就有待各位指教了。因为还有一种特殊情况:
typeof [1,2,3,4] == 'object'
说明数组也是object的一个子类型。
相关文章推荐
- javascript中==的数据类型转换规则
- JavaScript数据类型*3
- JavaScript面试时候的坑洼沟洄——数据类型
- javascript 数据类型转换
- javascript检测数据类型的5种方法
- javascript检测数据类型的5种方法
- 2. JavaScript数据类型与运算符
- JavaScript数据类型
- javascript判断数据类型
- JavaScript的数据类型与变量
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第20讲_js基本数据类型_js运算符1_学习笔记_源代码图解_PPT文档整理
- JavaScript for Kids 学习笔记2. 数据类型与变量
- JavaScript数据类型、变量、运算符号
- JavaScript的数据类型
- 2018.01.30 JavaScript语法-数据类型
- JavaScript数据类型
- 读javascript高级程序设计01-基本概念、数据类型、函数
- javascript学习笔记三:javascript基本数据类型+正则表达式+异常处理
- 【JavaScript】JavaScript数据类型
- javascript中的数据类型转换