- var foo = 10 + ‘20’; foo的值是_________。
- 答案:1020
- 考点:加号俩边有字符串类型默认为字符串相加
- console.log(0.1 + 0.2 == 0.3); 输出值是__________。
- 答案:false
- 考点:js默认将数字转换为2进制进行计算比较 但浏览器精确度不够
- “I’m a Iasagna hog”.split(“”).reverse().join(“”); 该语句的返回值是__________.
- 答案:goh angasal a m’I
- 考点:字符串和数组的方法先将该字符串分割成数组再反转之后再拼接成字符串
- (window.foo||(window.foo = “bar”)); window.foo 的值是__________。
- 下面代码中输出各是什么?
foo();
var foo = function() {
console.log(1);
};
foo();
function foo() {
console.log(2);
}
foo();
- 下面代码中数组的长度是 ____。
var arr =[]
arr[10] = 10
- 下面代码的输出是 __________。
setTimeout(()=>{
console.log("1")
Promise.resolve().then(()=>{
console.log("2")
})
})
console.log("3")
Promise.resolve().then(()=>{
console.log("4")
setTimeout(()=>{
console.log("5")
})
})
- 答案:34125
- 考点:js内部执行机制 同步----》异步(微任务----》宏任务)
- 写出下面输出结果
var name = 'window'
var person1 = {
name: 'person1',
foo1: function () {
console.log(this.name)
},
foo2: () => console.log(this.name),
foo3: function () {
return function () {
console.log(this.name)
}
},
foo4: function () {
return () => {
console.log(this.name)
}
}
}
var person2 = { name: 'person2' }
person1.foo1()
person1.foo1.call(person2)
person1.foo2()
person1.foo2.call(person2)
person1.foo3()()
person1.foo3.call(person2)()
person1.foo3().call(person2)
person1.foo4()()
person1.foo4.call(person2)()
person1.foo4().call(person2)
- 答案在代码块中的注释中
- 考点:this指向问题 call改变this指向 箭头函数的this不可更改
- 封装一个formatArr方法实现数组对象的去重
var arr = [
{ id: 1, city: "南京" },
{ id: 2, city: "南京" },
{ id: 3, city: "杭州" },
{ id: 4, city: "广州" },
];
function formatArr(array) {
const map = new Map();
for (const key of array) {
if (!map.has(key.city)) {
map.set(key.city, key);
}
}
return [...map.values()];
}
- 方法有很多 写出一种即可 冒泡、map、利用数组对象……
- 实现一个数组filter方法
function myFilter(array,fn){
let newArr = []
for(let i = 0;i < array.length;i++){
fn(array[i])&&newArr.psuh(array[i])
}
return newArr
}
var arr = [1,2,3,4,9,8]
var f = myFilter(arr, function(item) {
return item % 2 == 0
})
console.log(f)