ES6以后,Javascript的内置类型有哪些?其中哪些是基本类型?
- null
空值,表示没有对象,即此处不该有值 - undefined
未定义,表示此处应该有值,但是还未定义 - boolean
布尔值 true false - string
创建string对象的语法
new String(s)
String(s)
把s转换成原始字符串并返回
string对象属性: length constructor prototype
string对象方法: charAt() 返回指定位置的字符串 等等
- number
数字 Number(s) 把s转换成数字 - object
对象 js中所有事物都是对象,还可以自定义对象
可以通过字面量的方式或者构造函数的方式创建对象 - symbol
一种特殊的,不可变的数据类型,可用做对象属性的标识符
symbol()
来创建 每次创建的都是不一样的唯一标识
除了object之外都是基本类型
常见的类型转换,字符串和数字之间如何转换,任意类型如何转为布尔值
数字转为字符串:
数字 + '' ------> 字符串
toString(数字) ------> 字符串
string(数字) ------> 字符串
字符串转化为数字:
Number('字符串') ------> 数字
parseInt('字符串', 10) ------> 数字 // 整数
parseFloat(字符串) ------> 数字 //小数
'字符串' * 1 -----> 数字
Math.floor(''字符串) ------> 数字 //向下取整
任意类型转换为布尔值:
!!任意值 ------> 本身布尔值
Boolean(任意值) ------> 本身布尔值
各种类型的检测方法(至少三种方法,分析每种方法的优缺点)
方法一:
var type = (function(global) {
var cache = {};
return function(obj) {
var key;
return obj === null ? 'null' // null
: obj === global ? 'global' // window in browser or global in nodejs
: (key = typeof obj) !== 'object' ? key // basic: string, boolean, number, undefined, function
: obj.nodeType ? 'object' // DOM element
: cache[key = ({}).toString.call(obj)] // cached. date, regexp, error, object, array, math
|| (cache[key] = key.slice(8, -1).toLowerCase()); // get XXXX from [object XXXX], and cache it
};
}(this));
根据这个方法来检测数据类型很准确有效但是代码很长
方法二:
Object.prototype.toString.call(数据)
拿到不是直接的数据类型还要再裁剪
方法三:
typeof
可以用来检测基本类型 string
number
boolean
undefined
function
instanceof
检测对象,函数,返回布尔值检测null 直接简单粗暴的
数据 === unll
检测数组
isArray