每日3題 1 以下代碼執行後,控制臺中的輸出內容為? // 以下代碼執行後,瀏覽器的控制臺中輸出的內容是什麼 var arr = [0, 1, 2]; arr[10] = 10; var newArr = arr.filter((x) => x undefined); console.log(new ...
每日3題
1 以下代碼執行後,控制臺中的輸出內容為?
// 以下代碼執行後,瀏覽器的控制臺中輸出的內容是什麼
var arr = [0, 1, 2];
arr[10] = 10;
var newArr = arr.filter((x) => x === undefined);
console.log(newArr);
2 以下代碼執行後,控制臺中的輸出內容為?
// 以下代碼執行後,控制臺中輸出的內容是什麼
const obj = {
2: 3,
3: 4,
length: 2,
push: Array.prototype.push,
};
obj.push(1);
console.log(obj);
3 以下代碼執行後,控制臺中的輸出內容為?
// 以下代碼執行後,控制臺中輸出的內容是什麼
let x;
try {
throw new Error();
} catch (x) {
x = 1;
console.log(x);
}
console.log(x);
- 公眾號【今天也要寫bug】更多前端面試題
答案及解析
1
// 答案:[]
// 考察 filter 方法
var arr = [0, 1, 2];
arr[10] = 10;
var newArr = arr.filter((x) => x === undefined);
// 傳入 filter 方法的函數,只會在已經賦值的索引上被調用,對於那些已經被刪除或者從未被賦值的索引不會被調用。
// 所以最終沒有值通過測試
console.log(newArr);
2
// 答案:{ '2': 1, '3': 4, length: 3, push: [Function: push] }
// 考察 push 方法
// push 方法可以應用在類似數組的對象上
// push 方法根據 length 屬性來決定從哪裡開始插入給定的值
const obj = {
2: 3,
3: 4,
length: 2,
push: Array.prototype.push,
};
obj.push(1); // obj.length=2,所以 push 插入到索引 2 處,即 obj[2]=1
console.log(obj);
3
// 答案:1 undefined
// 考察 catch 和作用域
// catch塊指定一個標識符(在下麵為x),該標識符保存由throw語句指定的值。
// catch塊是唯一的,因為當輸入catch塊時,JavaScript 會創建此標識符,並將其添加到當前作用域;
// 標識符僅在catch塊執行時存在;catch塊執行完成後,標識符不再可用。
let x;
try {
throw new Error();
} catch (x) {
// x 僅在 catch 塊中可用
x = 1;
console.log(x); // 輸出 1
}
console.log(x); // x 從未賦值,輸出 undefined