总结面试题不一定是为了准备面试,更是对于自己的一种温故知新,了解自己知识的熟练度和理解度
问题一栏
1.JavaScript中的数据类型都有哪些?
2.如何判断一个变量是否为数组?
3.undefined和null的相同与不同?
4.隐式类型转化的时候,JavaScript底层都做了哪些处理?
5.有哪些值转化成布尔型后为false?
6.讲讲ES6中的Symbol?
7.如何把字符串转换为数组?
8.如何把类数组变量转换为数组,如函数内部的arguments对象,selector返回的DOM列表。
问题解答
JavaScript中的数据类型都有哪些?
数据类型有两种:原始数据类型(又称基础数据类型、可变数据类型)和复杂数据类型(又称对象、不可变数据类型)。
原始数据类型包括:undefined,null,数字,字符串,布尔类型,Symbol(ES6 新加入的类型)
复杂数据类型包括:包括对象
其中对象包括:内部对象(Array、String等),宿主对象(window)和自定义对象。
如何判断一个变量是否为数组?
数据类型有两种:原始数据类型(又称基础数据类型、可变数据类型)和复杂数据类型(又称对象、不可变数据类型)。
原始数据类型包括:undefined,null,数字,字符串,布尔类型,Symbol(ES6 新加入的类型)
复杂数据类型包括:包括对象
其中对象包括:内部对象(Array、String等),宿主对象(window)和自定义对象。
undefined和null的相同与不同?
相同点:
不同点:
隐式类型转化的时候,JavaScript底层都做了哪些处理?
对象转成原始数据类型时,先调用对象的valueOf方法,如果返回结果不是原始数据类型的值,再调用toString方法。
原始类型转原始类型时,直接调用对应的构造函数进行转换,如Number('123'),String(true),Boolean(0)。
有哪些值转化成布尔型后为false?
包括下面这个六种:
0、-0、undefined、null、空字符串、NaN
讲讲ES6中的Symbol?
Symbol是ES6中新加的一个原始类型,他的每个值都是唯一的,即使是用两个完全一样的变量构造出来的Symbol也不相等。
原始类型传入Symbol方法时,会进行转换成字符串 再转成Symbol类型值;如果是对象的话,会先调用改对象的toString方法再转成Symbol类型的值。
Symbol是最大的用处是用来消除“魔法字符串”的。
如何把字符串转换为数组?
是如果是ES6,可以用Array.from()方法。
如果不确定环境的话,可以用Array.prototype.slice.call()的方法,将类似数组转换为。
Array.from()的详解:(例子来自MDN)
Set类型的转换
let s = new Set(['foo', window]); Array.from(s); // ["foo", window]
Map类型的转换
let m = new Map([[1, 2], [2, 4], [4, 8]]); Array.from(m); // [[1, 2], [2, 4], [4, 8]]
类数组的值
function f() { return Array.from(arguments); } f(1, 2, 3); // [1, 2, 3]
Array.from()的第二个参数mapFn也很有用处,可以对于传入的类数组值进行定制化修改
Array.from([1, 2, 3], x => x + x); // [2, 4, 6] Array.from({length: 5}, (v, i) => i); // [0, 1, 2, 3, 4]
本文分享自微信公众号 - 较真的前端(gh_7af41a2be77e),作者:英俊潇洒你冲哥
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2017-09-13
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句