JS面试题【二】
写一下js面试题,标准答案都是在网上找的,这些方法和内容开发时,需要的时候都使用过,又不想死记硬背,转换成自己理解的面试语言,如何转换呢??
1、谈谈你对递归的认识?
递归:程序调用自身的编程技巧称为递归,自己调用自己。
function factorial(num) {
return ( num <= 1 ) ? 1 : num * factorial(num - 1);
}
console.log(factorial(8));
2、简述forin 循环的特点及使用场景?
for…in 语句用于对数组或者对象的属性进行循环操作。 for … in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。 注意:forin循环不会按照属性的下标来排列输出。
for (变量 in 对象){
在此执行代码
}
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
3、split()join()的区别?
split() 方法通过把字符串分割成子字符串来把一个 String 对象分割成一个字符串数组。
语法 str.split([separator][, limit])
参数 separator 指定用来分割字符串的字符(串)。separator 可以是一个字符串或正则表达式。 如果忽略 separator,则返回整个字符串的数组形式。如果 separator 是一个空字符串,则 str 将会把原字符串中每个字符的 数组形式返回。 参数limit是一个整数,限定返回的分割片段数量。split 方法仍然分割每一个匹配的 separator,但是返回的数组 只会截取最多 limit 个元素。
“|a|b|c”.split("|") //将返回["", “a”, “b”, “c”]
“hello”.split("") //可返回 [“h”, “e”, “l”, “l”, “o”]
“hello”.split("", 3) //可返回 [“h”, “e”, “l”]
join() 方法将数组中的所有元素连接成一个字符串。
语法 str = arr.join([separator = ‘,’])
参数separator 可选,用于指定连接每个数组元素的分隔符。分隔符会被转成字符串类型;如果省略的话,默认为 一个逗号。如果 seprator 是一个空字符串,那么数组中的所有元素将被直接连接。
例子: var a = [‘Wind’, ‘Rain’, ‘Fire’];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar3 = a.join(’ + ‘); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(’’); // myVar4的值变为"WindRainFire"
4、如何消除一个数组里面重复的元素?
var arr1 =[1,2,2,2,3,3,3,4,5,6],
arr2 = []; for(var i = 0,len = arr1.length; i< len; i++){
if(arr2.indexOf(arr1[i]) < 0){
arr2.push(arr1[i]);
}
}
document.write(arr2); // 1,2,3,4,5,6
5、请说出和=的区别?
判断内容是否相等 不比较类型 console.log(1 == “1”); true
=== 判断内容相等 且类型也相等 console.log(1 ===“1”); false
6、请列举字符串操作的方法?
charCodeAt() 方法返回一个整数,代表指定位置字符的Unicode编码;
charAt() 方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符串;
slice() 方法返回字符串的片段;
substring() 方法返回位于String对象中指定位置的子字符串。
substr() 方法返回一个从指定位置开始的指定长度的子字符串。
indexOf() 方法返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1;
lastIndexOf() 方法返回String对象中字符串最后出现的位置。如果没有匹配到子字符串,则返回-1;
search() 方法返回与正则表达式查找内容匹配的第一个字符串的位置。
concat() 方法返回字符串值,该值包含了两个或多个提供的字符串的连接;
split() 将一个字符串分割为子字符串,然后将结果作为字符串数组返回;