0301
(1)编程题1

- (1)使用递归
function valFilter(obj) {
for(let attr in obj){
if(Object.prototype.toString.call(obj[attr]) === "[object Object]"){
valFilter(obj[attr]);
}
else if(obj[attr] === null){
delete obj[attr]
}
}
return obj;
}
(2)编程题2

- (1)Set
Array.prototype.unique = function(){
let rawArr = this;
return Array.from(new Set(rawArr))
};
- (2)最坏为 O(n^2)
Array.prototype.unique = function() {
let rawArr = this;
let resultArr = [];
for (let i = 0; i < rawArr.length; i++) {
if (resultArr.indexOf(rawArr[i]) < 0) {
resultArr.push(rawArr[i]);
}
}
return resultArr;
};
- (3)与2.类似
Array.prototype.unique = function() {
let rawArr = this;
return rawArr.filter((item,index)=>{
return rawArr.indexOf(item) === index
})
};
(3)编程题3

答案:1 [Function: a]
为什么 a
的值没有改变呢?
a();
var b = function a(x) {
console.log("hello")
}
//ReferenceError: a is not defined
//等号后的函数不提升
补充
- 编译型语言和解释型语言
编译型语言编译一次生成可执行文件,如C,C++;而解释型语言是一边编译一边执行,不生成可执行文件,但需要相应的解释器,如python,JavaScript。
网友评论