每日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 直接报错
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。