每日3題
1 以下代碼執行后,控制臺中的輸出內容為?
console.log(+true, !'hello')
2 點擊p標簽時,會輸出什么
const numbers=[1,2,3,4,5]
const [y] = numbers
console.log(y)
3 以下代碼執行后,控制臺中的輸出內容為?
const fn = (x) => (y) => (z) => {
console.log(x, y, z);
};
fn(1)(2)(3);
- 公眾號【今天也要寫bug】更多前端面試題
答案及決議
1
// 答案:1 false
// 考察運算子和型別轉換
// 相加運算子:如果+兩邊有字串,則將兩者拼接為字串,否則進行相加運算
// +true,會將 true 轉換成數字 1,最終輸出 1
console.log(+true, !"hello");
// 在 JS 中,假值有:null;NaN;0;空字串 ("" or '' or ``);undefined.
// 除此之外都是真值
// !真值 => 假值,!假值 => 真值
// 所以 !"hello" 為 false
2
// 答案:1
// 考察 ES6 陣列的解構賦值
// ES6 允許寫成這樣:
// let [a, b, c] = [1, 2, 3]
// 這種寫法可以從陣列中提取值,按照對應位置,對變數賦值
const numbers = [1, 2, 3, 4, 5];
const [y] = numbers; // y 對應 1
console.log(y); // 故輸出 1
3
// 答案:1 2 3
// 考察箭頭函式的閉包和函式呼叫的結合性
const fn = (x) => (y) => (z) => {
console.log(x, y, z);
};
// fn 相當于:
const fn = (x) => {
return (y) => {
return (z) => {
console.log(x, y, z);
};
};
};
fn(1)(2)(3); // 函式呼叫的結合性是從左到右,等價于
const f1 = fn(1); // (y) => {...}
const f2 = f1(2); // (z) => { console.log(x, y, z); }
f2(3); // 輸出 1 2 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/509354.html
標籤:JavaScript
