js内置类型,类型转化,类型检测

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));

js内置类型,类型转化,类型检测_第1张图片
c6046bf7-5909-4ff0-88cc-dc8a0a4f403e.png

根据这个方法来检测数据类型很准确有效但是代码很长
方法二:
Object.prototype.toString.call(数据)

js内置类型,类型转化,类型检测_第2张图片
e0c024d3-a712-46ec-bfe0-7ed62b7c4519.png

拿到不是直接的数据类型还要再裁剪
方法三:
typeof 可以用来检测基本类型 string number boolean undefined function
instanceof检测对象,函数,返回布尔值
检测null 直接简单粗暴的 数据 === unll
检测数组 isArray

你可能感兴趣的:(js内置类型,类型转化,类型检测)