每日3題 1 以下代碼執行後,控制臺中的輸出內容為? var company = { address: "chengdu", }; var obj = Object.create(company); delete obj.address; console.log(obj.address); 2 以下 ...
每日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 直接報錯