每日3題
28 以下代碼執行后,控制臺中的輸出內容為?
function showCase(value){
switch(value){
case 'A':
console.log('case A');
break;
case 'B':
console.log('case B');
break;
case undefined:
console.log('undefined');
break;
default:
console.log('Do not know');
}
}
showCase(new String('A'));
29 以下代碼執行后,控制臺中的輸出內容為?
function f(){}
const a = f.prototype,
b = Object.getPrototypeOf(f);
console.log(a===b);
30 以下代碼執行后,控制臺中的輸出內容為?
console.log(typeof null)
console.log(null instanceof Object)
公眾號【今天也要寫bug】更多前端面試題
答案與決議
28
// 答案:Do not know
// 考察基本字串、字串物件和 switch
// 字串字面量是 string 型別
// 字串物件是 object 型別
// switch 使用嚴格運算子(===)來進行比較
// 在下面 switch case 沒有匹配的 case,因此走的是 default
function showCase(value) {
switch (value) {
case "A":
console.log("case A");
break;
case "B":
console.log("case B");
break;
case undefined:
console.log("undefined");
break;
default:
console.log("Do not know");
}
}
showCase(new String("A"));
29
// 答案:false
// 考察原型鏈
// 函式本身也是物件
// 函式作為物件,是new Function 建構式產生的,所以 f.__proto__ => Function.prototype
// 函式的 f.prototype 則默認是一個空物件,和 f.__proto__ 沒有關系
function f() {}
const a = f.prototype,
b = Object.getPrototypeOf(f);
console.log(a === b);
// Object.getPrototypeOf 方法回傳物件的原型物件即 f.__proto__
// f.prototype 不等于 f.__proto__
// 最終輸出 false
30
// 答案:object false
// 考察 typeof、instanceof、原型鏈
console.log(typeof null); // 記住就好了 typeof null 為 object
console.log(null instanceof Object);
// instanceof運算子用于檢測建構式(右邊)的 prototype 屬性是否出現在實體物件(左邊)的原型鏈上
// null 是原型鏈的終點,Object.prototype 當然不會出現在 null 的原型鏈上
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505974.html
標籤:其他
上一篇:066_末晨曦Vue技術_過渡 & 影片之多個元素的過渡
下一篇:Math物件
