每日3題
1 以下代碼執行后,控制臺中的輸出內容為?
var company = {
address: "chengdu",
};
var obj = Object.create(company);
delete obj.address;
console.log(obj.address);
2 以下代碼執行后,控制臺中的輸出內容為?
var a = [0];
if (a) {
console.log(a == true);
} else {
console.log(a);
}
3 以下代碼執行后,控制臺中的輸出內容為?
(function () {
var a = (b = 5);
})();
console.log(b);
console.log(a);
- 公眾號【今天也要寫bug】更多前端面試題
答案及決議
1
// 答案:chengdu
// 考察原型鏈和 Object.create 方法
// Object.create() 方法用于創建一個新物件,使用現有的物件來作為新創建物件的原型
var company = {
address: "chengdu",
};
var obj = Object.create(company); // obj.__proto__=company
delete obj.address; // 洗掉 obj 的屬性 address
console.log(obj.address); // 通過原型鏈可以找到 company.address
// 故輸出 chengdu
2
// 答案:false
// 考察 truthy 和 falsy
// falsy 值(虛值)是在 Boolean 背景關系中認定為 false 的值,包括:false、0、-0、0n、""、null、undefined 和 NaN
// 在 JavaScript 中,truthy(真值)指的是在布林值背景關系中,轉換后的值為 true 的值,被定義為假值以外的任何值都為真值,
// JavaScript 在需要用到布爾型別值的背景關系中使用強制型別轉換 (Type Conversion ) 將值轉換為布林值,例如條件陳述句和回圈陳述句,
var a = [0]; // truthy
if (a) {
console.log(a == true); // false
} else {
console.log(a);
}
3
// 答案:5 報錯
// 考察變數宣告
// 在非嚴格模式下,如果作用域鏈中沒有宣告同名的變數,則對未限定識別符號的賦值將會在全域物件下創建同名屬性,即作為全域變數被創建
(function () {
var a = (b = 5); // 此處變數 b 會成為全域變數
})();
console.log(b); // 輸出 5
console.log(a); // 作用域中沒有變數 a 直接報錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/508117.html
標籤:JavaScript
下一篇:事件流
