1、
实现一个工具方法,将下划线命名格式的字符串转化为驼峰命名格式
//实现1
var convert1 = (name) => {
let result = name.split("_");
const [first, ...rest] = result;
return (
first +
rest
.map((item) => item.substring(0, 1).toUpperCase() + item.substring(1))
.join("")
);
};
//实现2
var convert2 = (name) => {
return name.replace(/(\_\w)/g, function (word) {
return word.slice(1, 2).toUpperCase() + word.slice(2);
});
};
2、
实现 Array 的 flat 方法的polyfill
我的(未实现):
var flat = (arr, number) => {
let result = [],
count = 0;
count++;
for (let item of arr) {
if (Array.isArray(item)) {
if (count === number) {
break;
}
flat(item, number);
} else {
result.push(item);
}
}
return result;
};
修改后的实现:
var flat = (arr, number = 10) => {
let result = [],count = 0;
var helper = (arr) => {
let res = [];
count++;
for (let item of arr) {
if (Array.isArray(item)) {
if (count === number) {
break;
}
res = res.concat(helper(item));
} else {
res.push(item);
}
}
return res;
};
result = result.concat(helper(arr));
return result;
};
参考实现:
var flat = (arr) => {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flat(cur) : cur);
}, []);
};
3、
// code1
console.log(typeof typeof typeof null); //string
console.log(typeof null); //"object"
console.log(typeof typeof null); //string
// code 2
var a = 1;
function fn() {
console.log(a); //undefined
var a = 2;
}
fn();
var a = 1;
function fn() {
console.log(a); //Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 2;
}
fn();
// code 3
var count = 10;
function a() {
return count + 10;
}
function b() {
var count = 20;
return a();
}
console.log(b()); //20
// code 4
<style>
.classA {
color: blue;
}
.classB {
color: red;
}
p {
color: black;
}
</style>
<p class="classB classA">hello</p>
//元素p内的文字最终什么颜色 red
4、
// code 1
Function.prototype.a = () => alert(1);
Object.prototype.b = () => alert(2);
function Foo() {}
var bar = new Foo();
bar.a(); //Uncaught TypeError: bar.a is not a function
bar.b(); //2
// code 2
function Foo() {
this.a = 1;
return {
a: 4,
b: 5,
};
}
Foo.prototype.a = 6;
Foo.prototype.b = 7;
Foo.prototype.c = 8;
var o = new Foo();
console.log(o.a); //4
console.log(o.b); //5
console.log(o.c); //undefined