前端知识复习

182 阅读1分钟

一、数据类型

1.数据类型

原始类型:number string boolean null undefined

object类型(Function, Array, Date ...)

2.隐式转换

'37' - 7 // 30 
字符串转数字,可以直接减0, 如'37' - 0; Number(); parseInt(); parseFloat();'37' + 7 // 377

== 与 ===

NaN 不等于 NaN

3.包装对象(wrapper object)

var a = 'string';
a.length // 6
a.length = 3;
a.length // 6
a.t = '6';
a.t // undefined
// 定义了一个基础类型a, 是一个简单的字符串,但是却有length属性
// 当你尝试以对象的方式去访问,a这个字符串的属性时候
// 原始类型的值会自动当作包装包装对象调用,即调用包装对象的属性和方法。
// 这时,JavaScript 引擎会自动将原始类型的值转为包装对象实例,并在使用后立刻销毁实例。

var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);

typeof v1 // "object"
typeof v2 // "object"
typeof v3 // "object"

v1 === 123 // false
v2 === 'abc' // false
v3 === true // false 

4.类型检测

typeof

typeof 100 // "number"
typeof NaN // "number"
// 区分数字和NaN的方法
 Number.isNaN = Number.isNaN || function(value) {
    return typeof value === "number" && isNaN(value);
}typeof true // "boolean"
typeof aaa // "undefined"
typeof function(){} // "function"typeof 'aaa' // "string"
typeof [] // "object" ,Array.isArray(obj)
typeof {} // "object"
typeof null // "object", JavaScript 诞生以来便如此,
// 在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。

instanceof 基于原型链判断

['1'] instanceof Array // true
['1'] instanceof Object // true

Object.prototype.toString

Object.prototype.toString.apply(function(){}) // "[object Function]"
Object.prototype.toString.apply([]) // "[object Array]"
Object.prototype.toString.apply(null) // "[object Null]"
Object.prototype.toString.apply(undefined) // "[object Undefined]"