面试题–JS基础
1. JavaScript的typeof返回哪些数据类型
会返回5种数据类型和一种函数类型 number string boolean undefined object function
alert( type of 1 ) // number
alert( type of "zhangsan" ) // string
alert( typeof true ) // boolean
var a ;
alert( typeof a ) // undefined
alert( typeof [1,2] ) // object
alert( typeof {name:"zs"} ) // object
alert( null ) // object
function b () {}
alert( typeof b ) // function
数组、对象、null的typeof都返回object, 怎么区分呢?
可以通过
toString()
来获取每个对象的类型。为了每个对象都能通过Object.prototype.toString()
来检测,需要以Function.prototype.call()
或者Function.prototype.apply()
的形式来调用,传递要检查的对象作为第一个参数,称为thisArg
。
var toString = Object.prototype.toString;
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
toString.call([1,2]); // [object Array]
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
2. 例举三种强制类型转换和2种隐式类型转换
-
强制转换
String()
,Number()
,Boolean()
String(1) // 数字类型转换为字符串 Number("21") // 字符串类型转换为数字
-
隐式转换
- 通过±*/等
10+'20' //1020 string 10-'20' //-10 number 10-'one' //NaN not a number 10-'101a' //NaN '10'*'20' //200 number 20/'10' //2 number '20'/'10' //2 number '20'/'one' //NaN parseFloat('123.4a') // 123.4 number parseInt("123a") // 123 number
-
==
先比较类型,类型不同,转同类型后再比较数值
undefined == null // true '0' == 0 // true 0 == false // true '0' == false // true null == false // false undefined == false // false [] == false // true
3.split()、join() 的区别
split()
是字符串转数组的方法
split()
方法使用指定的分隔符字符串将一个String
对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。
var str = 'The quick brown fox jumps over the lazy dog.';
var words = str.split(' ');
console.log(words[3]);
// expected output: "fox"
var chars = str.split('');
console.log(chars[8]);
// expected output: "k"
var strCopy = str.split();
console.log(strCopy);
// expected output: Array ["The quick brown fox jumps over the lazy dog."]
join()
是数组转字符串的方法
join()
方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
var elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// expected output: "Fire,Air,Water"
console.log(elements.join(''));
// expected output: "FireAirWater"
console.log(elements.join('-'));
// expected output: "Fire-Air-Water"