不起眼的面试题
看了一些面试题的知识点今天来简单总结一下,涉及到的知识点如下:
- typeof数据类型判断
- 数据类型的转换
typeof数据类型判断
常用的数据类型判断的方式大致有以下几种:typeof、instanceof、constructor、prototype。但是面试的时候恐怕一个最简单最有趣的无非就是typeof了。首先我们来说说typeof判断数据类型所返回的类型字符串都有哪些?
- "number":数字类型和NaN。
- "string":字符串类型。
- "boolean":布尔类。
- "underfine":没有声明和定义的,或者本身就是undefined。
- "symbol":typeof Symbol()。
- "object": 对象、数组、时间、正则和null。
- "function": 方法。
接下来看一下几个关于typeof有趣的问题
- typeof a ? 首先a是没有定义的,从上面我们总结的规则可知结果是"undefined"(注意是字符串undefined)
- typeof typeof typeof a ? 首先typeof a返回的值是"undefined",那么typeof typeof "undefined"呢?很显然判断的是字符串"undefined"的数据类型,那么肯定是"string", 那么最终的结果是"string"。切记typeof返回的均为字符串,那么字符串的数据类型必然值字符串。是不是感觉好玩,那些唬人的typeof连续进行判断面试题到这里就迎刃而解了呢~。
- typeof (a == undefined) ? 想必大家一定在想这里返回的是什么数据类型,但是大家别忘了在进行判断的时候就已经报错了,a is not defined。
数据类型的转换
-
强制类型的转换 相信大家对于强制类型转换也都十分了解,下面就简单的来看一下。
- 强制转换为Number类型 Number()转换字符串类型要求是空字符串或者全数字的字符串,parseInt()(不考虑进制转换的形式)转换只取整数部分并且数字的位置在整个字符串的最前面,parseFloat()可以转换小数,格式要与parseInt一致,也要求数字部分在整个字符串的开头。Boolean类型转换true会转换成1false转换为0,其余的数据类型全都转换为NaN。简单总结如下
口诀:Number可转空为0,亦可转换全数字。Int取整数在前,Float小数不 放过,要与Int保一致。true转1来false转0,其余全转NaN。
-
强制转换为Boolean类型 Boolean()可以对数据类型进行强制转换,""、undefined、null、0、NaN均转换为false,其余均为true
口诀:转换数字用Boolean,切记以下全为否(false)。 空字符、undefined、临难(0null)牵手NaN
-
强制转换String类型 String()函数,将任何类型的值转换为字符串,其规则为Boolean 值是 true,则返回 “true”。否则,返回 “false”;Number返回数字的文字表示;Object返回"[object object]";Date返回日期的文字表示法;Array 的元素转换为字符串,结果字符串由逗号分隔,且连接起来;Function直接赶回函数的字符串;
口诀:String强转很简单,数据类型全加引, 对象数组较特殊。数组转换去括号,对象全转"[object object]"