16. 数据类型检测的方式有哪些
1==>typeof 对数组、对象、null都会被判断为object。
其他判断都正确。
所以typeof判断基本数据类型。
console.log(typeof 2) //number console.log(typeof null);// object
2==>instanceof能正确判断引用数据类型
console.log(2 instanceof Number);// false
3.constructor有两个作用,
一是判断数据的类型。
二是对象实例通过 constrcutor 对象访问它的构造函数。
需要注意,如果创建一个对象来改变它的原型。
constructor就不能用来判断数据类型了:
console.log((2).constructor === Number); // true 4.Object.prototype.toString.call() Object.prototype.toString.call()使用Object对象的原型方法 toString 来判断数据类型: var a = Object.prototype.toString; console.log(a.call(2)); //[object Number]
17typeof null 的结果是什么,为什么?我的理解
typeof null 的结果是Object。
因为:在 JavaScript 第一个版本中,
所有值都存储在 32 位的单元中
每个单元包含一个【小的类型标签】和当前要存储值的【真实数据】
{000: object - 当前存储的数据指向一个对象。你的理解}
object的标签类型是000
null 的值是机器码 NULL 指针(null 指针的值全是 0)
和Object的类型标签一样,所以会被判定为Object。
19 typeof NaN 的结果是什么?
typeof NaN; // "number"
20 解释一下NaN,或者你对NaN的理解
NaN是一个非数字类型的Number类型。不是一个明确的值。
在“执行数学运算没有成功,这是失败后的结果”。
如果时间运算失败的情况会出现NaN.
在ios的移动时间是 2012-12-12 12:12:12在进行元素的时候可能返回NaN
21 解释一下什么是 promise ?
promise是js中的一个对象,用于生成[可能在将来]产生结果的值。
promise 可以有三种状态:
1.pending:初始状态,既不是成功也不是失败
2.fulfilled:意味着操作完全成功 [fu fei old]
3.rejected:意味着操作失败 [ rejected ]
在使用的时候,new Promise,在Promise中有两个参数resolve, reject,
他们既是参数也是函数。resolve处理成功。reject处理失败的。