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