typeof能判断哪些数据类型?
// 判断所有值类型
let a; typeof a //'undefined'
const str='abc'; typeof str//'string'
const n=100; typeof n //'number'
const b=true; typeof b //'boolen'
const s=Symbol('s'); typeof s //'symbol',注意symbol怎么声明的
// 能判断函数
typeof console.log //'funcction'
typeof function(){} //'funcction'
// 能识别引用类型(不能再继续识别)
typeof null //'object'
typeof ['s','b'] //'object'
typeof {x:100} //'object'
常见值类型
let a //undefined
const s='abc'
const n=100
const b=true
const s=Symbol('s')
常见引用类型
const obj={x:100}
const arr=['a','b','c']
const n=null //特殊引用类型,指针指向为空地址
function fn(){} //特殊引用类型,但不用于存储数据,所有没有“拷贝、复制函数”这一说
值类型和引用类型的区别
值类型放在栈里,栈从上往下排列
引用类型放在堆里,堆从下往上排列
为什么值类型是直接赋值,引用类型得复用内存地址是这样一个赋值形式:
因为考虑到性能问题,存储问题,
因为像值类型它的占用空间是比较少的,所以可以直接赋值没问题,
复制的时候也不会对性能造成很大的影响,引用类型就不一样了,
一个对象一个json可能非常大,
第一个会不好管理,
第二会在复制过程中非常慢。
所以值类型和引用类型的存储机制,赋值机制,拷贝机制都是严格的分开的,
它是基于内存的空间和CPU的耗时来做的这个一个区分,它是不得已而为之。
值类型,引用类型的拷贝,我们怎么去做深拷贝
https://segmentfault.com/a/11...
判断数据类型的方法(划重点来了,这是重点)
怎么判断一个变量是不是对象等问题的方法
对象原型
function dataType(data) {
data = Object.prototype.toString.call(data);
var type = {
'[object String]': 'string',//字符串
'[object Object]': 'object', //{}
'[object Number]': 'number',//数字
'[object Array]': 'array',//数组
'[object Date]': 'date',//日期
'[object Function]': 'function',//函数
'[object Boolean]': 'boolean',//布尔值
'[object Null]': 'null'//null
};
return type[data];
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。